QT开发步骤

先用QT Designer设计一个窗体,设定可以设定的信号连接,然后把它保存为一个.ui文件
,比如form1.ui
然后,打开QT Command prompt控制台,切换到保存.ui文件的那个目录下面,然后运行下面命令:
 
uic form1.ui > form1.h
 
 
这是,大家会看到下面的代码:
 
#ifndef UNTITLED_H
#define UNTITLED_H
 
#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QGridLayout>
#include <QtGui/QLineEdit>
#include <QtGui/QListWidget>
#include <QtGui/QMainWindow>
#include <QtGui/QPushButton>
#include <QtGui/QWidget>
 
class Ui_MainWindow
{
public:
   QWidget *centralWidget;
   QGridLayout *gridLayout;
   QPushButton *pushButton_2;
   QLineEdit *lineEdit;
   QPushButton *pushButton;
   QListWidget *listWidget;
 
   void setupUi(QMainWindow *MainWindow)
   {
   MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
   MainWindow->resize(QSize(218, 294).expandedTo(MainWindow->minimumSizeHint()));
   centralWidget = new QWidget(MainWindow);
   centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
   gridLayout = new QGridLayout(centralWidget);
   gridLayout->setSpacing(6);
   gridLayout->setMargin(8);
   gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
   pushButton_2 = new QPushButton(centralWidget);
   pushButton_2->setObjectName(QString::fromUtf8("pushButton_2"));
 
   gridLayout->addWidget(pushButton_2, 2, 1, 1, 1);
 
   lineEdit = new QLineEdit(centralWidget);
   lineEdit->setObjectName(QString::fromUtf8("lineEdit"));
 
   gridLayout->addWidget(lineEdit, 1, 0, 1, 2);
 
   pushButton = new QPushButton(centralWidget);
   pushButton->setObjectName(QString::fromUtf8("pushButton"));
 
   gridLayout->addWidget(pushButton, 2, 0, 1, 1);
 
   listWidget = new QListWidget(centralWidget);
   listWidget->setObjectName(QString::fromUtf8("listWidget"));
 
   gridLayout->addWidget(listWidget, 0, 0, 1, 2);
 
   MainWindow->setCentralWidget(centralWidget);
   retranslateUi(MainWindow);
 
   QMetaObject::connectSlotsByName(MainWindow);
   } // setupUi
 
   void retranslateUi(QMainWindow *MainWindow)
   {
   MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow"));
   pushButton_2->setText(QApplication::translate("MainWindow", "PushButton"));
   pushButton->setText(QApplication::translate("MainWindow", "PushButton"));
   Q_UNUSED(MainWindow);
   } // retranslateUi
 
};
 
namespace Ui {
   class MainWindow: public Ui_MainWindow {};
} // namespace Ui
 
#endif // UNTITLED_H
 
 
 
我并不喜欢上面的自动生成的代码,我要对它进行一下整理,同时加上自己的控制
 
form1.h
 
#ifndef FORM1_H
#define FORM1_H
 
#include <QtGui/QGridLayout>
#include <QtGui/QLineEdit>
#include <QtGui/QListWidget>
#include <QtGui/QMainWindow>
#include <QtGui/QPushButton>
 
class Form1: public QMainWindow
{
 Q_OBJECT
public:
     Form1();
public slots:
     void insertItem();
public:
   QWidget *centralWidget;
   QGridLayout *gridLayout;
   QLineEdit *lineEditString;
   QPushButton *pushButton_Quit;
   QPushButton *pushButton_Insert;
   QListWidget *listWidgetList;
};
 
#endif // FORM1_H
 
 
 
form1.cpp
 
#include <QMessageBox>
#include <QString>
#include "form1.h"
 
Form1::Form1()
{
   this->resize(QSize(194, 323).expandedTo(this->minimumSizeHint()));
   centralWidget = new QWidget(this);
   gridLayout = new QGridLayout(centralWidget);
   gridLayout->setSpacing(6);
   gridLayout->setMargin(8);
   lineEditString = new QLineEdit(centralWidget);
 
   gridLayout->addWidget(lineEditString, 1, 0, 1, 2);
 
   pushButton_Quit = new QPushButton(tr("Quit"), centralWidget);
 
   gridLayout->addWidget(pushButton_Quit, 2, 1, 1, 1);
 
   pushButton_Insert = new QPushButton(tr("Insert"), centralWidget);
 
   gridLayout->addWidget(pushButton_Insert, 2, 0, 1, 1);
 
   listWidgetList = new QListWidget(centralWidget);
 
   gridLayout->addWidget(listWidgetList, 0, 0, 1, 2);
 
   this->setCentralWidget(centralWidget);
   QObject::connect(pushButton_Quit, SIGNAL(clicked()), this, SLOT(close()));
   QObject::connect(pushButton_Insert, SIGNAL(clicked()), this, SLOT(insertItem()));
   
   setWindowTitle(tr("Test Program"));  
}
 
void Form1::insertItem()
{
   QString strInsert = lineEditString->text();
   if (strInsert.isEmpty())
   {
   QMessageBox::warning(this, tr("Alert"),  
                         tr("You have not input any character"),  
                         tr("OK"));
           lineEditString->setFocus();
   }
   else
   {
       listWidgetList->addItem(lineEditString->text());
       lineEditString->clear();
   }
}
 
 
 
再加上一个主函数
 
main.cpp
 
#include <QApplication>
#include <QTranslator>
#include "form1.h"
 
int main(int argc, char **argv)
{
   QApplication app(argc, argv);
   Form1 form1;
   form1.show();
   return app.exec();
}
 
 
 
 
这样,我们就写完一个基本的函数了,但,我们要加入多语言支持的,现在还不行。于是,修改主函数:
 
#include <QApplication>
#include <QTranslator>
#include "form1.h"
 
int main(int argc, char **argv)
{
   QApplication app(argc, argv);
   QTranslator translator;
   translator.load(QString("ex5_") + QString(argv[1]));
   app.installTranslator(&translator);
   Form1 form1;
   form1.show();
   return app.exec();
}
 
 
 
我们用参数,控制程序使用哪种语言.
接下来,就需要翻译了,
打开控制台,用lupdate命令生成.ts文件
 
lupdate form1.cpp -ts ex5_en.ts
 
 
我们再把上面的ex5_en.ts文件复制两份,分别命名为ex5_zh_CN.ts和ex5_zh_TW.ts,再下来,我们就可以使用Qt Linguish翻译工具,来翻译我们想要的语言了。
翻译完这三个.ts文件后,把他们保存了,并且发布了(也就是运行菜单lrelease命令,它会生成.ts对应的qm文件)。
 
再接下来,就需要生成工程文件了。
 在控制台下运行下面命令:
 
qmake -project
 
完成后,它就会生成下面内容的文件:
 
######################################################################
# Automatically generated by qmake (2.00a) ??? ?? 30 20:57:58 2005
######################################################################
 
TEMPLATE = app
DEPENDPATH += .
INCLUDEPATH += .
 
# Input
HEADERS += form1.h
SOURCES += form1.cpp main.cpp
TRANSLATIONS += ex5_en.ts ex5_zh_CN.ts ex5_zh_TW.ts
 
 
 
然后,运行qmake命令生成Makefile文件,再运行make命令,来进行编译
 
qmake
make
 
 
编译完成后,就会在Release目录下面生成ex5.exe文件,把它拷贝到上层目录中,在控制台上运行下面命令就可以产生相应语言的界面效果了
 
ex5 zh_CN
ex5 zh_TW
ex5 en
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值