直接使用代码来直接编写GUI无疑是非常痛苦的,好在QT提供了界面开发工具:QTdesigner。在QT的安装目录下的bin目录中,找到designer.exe,运行后就可以设计一个你所需要的QT程序界面。
选择菜单file->new form,就会出现一个选择要创建表单类型的对话框,选择widget,然后点create按钮,就会出现一个设计状态的表单。在左边的widget box中选择Push Button,在上面点下左键按住不放拖动到设计表单上再松开左键,设计表单上就会新增一个Push Button。
修改完表单以及Push Button的外观和大小后,可以试着增加事件响应,找到右边的Signal/Slot Editor窗口,在里面的+号上点一下,Signal/Slot Editor窗口的列表就会新增一项,然后双击新增项的sender列,选择pushButton;双击新增项的signal,选择clicked(); 双击新增项的Receiver,选择form;双击新增项的Slot,选择close()。
完成以上工作后,保存表单。然后进入命令提示符模式,进入表单保存的目录,使用uic命令创建.H文件(要确保UIC.exe所在的目录在PATH环境变量中,UIC.exe在QT安装目录的bin目录下),命令格式如下:
UIC -o 头文件名 UI文件名
其中头文件名是你要输出的.h文件的名字,UI文件名就是刚才designer保存的表单文件的名字,例如:
UIC -o form.h form.ui 就是将保存的form.ui输出form.h文件。
需要注意的是,在QT3中使用例如UIC -o form.cpp -i form.h form.ui这样的方式来生成表单的CPP文件,但在QT4中,UIC已经作了修改,不能输出表单的CPP文件。
打开输出的头文件,可以看到建立的表单类的状况,我的示例的头文件内容如下:
#ifndef FORM_H
#define FORM_H
#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QPushButton>
#include <QtGui/QWidget>
class Ui_Form
{
public:
QPushButton *pushButton;
void setupUi(QWidget *Form)
{
if (Form->objectName().isEmpty())
Form->setObjectName(QString::fromUtf8("Form"));
Form->resize(400, 300);
pushButton = new QPushButton(Form);
pushButton->setObjectName(QString::fromUtf8("pushButton"));
pushButton->setGeometry(QRect(40, 230, 75, 23));
retranslateUi(Form);
QObject::connect(pushButton, SIGNAL(clicked()), Form, SLOT(close()));
QMetaObject::connectSlotsByName(Form);
} // setupUi
void retranslateUi(QWidget *Form)
{
Form->setWindowTitle(QApplication::translate("Form", "Form", 0, QApplication::UnicodeUTF8));
pushButton->setText(QApplication::translate("Form", "PushButton", 0, QApplication::UnicodeUTF8));
Q_UNUSED(Form);
} // retranslateUi
};
namespace Ui {
class Form: public Ui_Form {};
} // namespace Ui
#endif // FORM_H
运行DEV,新建一个Empty project,将头文件添加到工程中,然后修改main.cpp,我的示例中main.cpp源码如下:
#include <qapplication.h>
#include <qwidget.h>
#include <QPushButton.h>
#include "form.h"
int main(int argc, char **argv)
{
QApplication app(argc, argv);
QWidget w;
Ui::Form ui;
ui.setupUi(&w);
w.show();
return app.exec();
}
编译,然后运行,刚刚设计出来的表单就会运行出来,点击Push Button,程序就会退出,这是在设计时Push Button响应关联到form的close的结果。