用designer设计的*.ui文件可以通过uic工具转换为*.h文件(在编译时也会自动生成这样一个ui_*.h文件),有了这个.h文件就可以直接按照纯C++的方式对其中的类进行调用。ui文件的使用就是利用默认工具uic自动产生一个类,然后用该类的setui函数加载界面到相应的对象上。
#ifndef DIALOG_H
#define DIALOG_H
#include
namespace Ui {
class Dialog;
}
class Dialog : public QDialog { //又定义了一个Dialog类
Q_OBJECT
public:
Dialog(QWidget *parent = 0);
~Dialog();
protected:
void changeEvent(QEvent *e);
private:
Ui::Dialog *ui; // 声明一个子类
private slots:
void on_pushButton_clicked();
};
#endif // DIALOG_H
红色部分声明一个类,将设计出来的ui界面作为该类的一个子对象,在其构造函数中,先完成对子对象的构造,再使用子对象ui调用其setupUi(this)函数实现ui的现实。
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this); //加载界面
}
看完上面的代码,我们来分析下到底为什么要这样来使用ui文件。
在没有qtcreator之前,给了我们一个ui文件,该如何调用?
针对于ui文件,不知道大家知不知道uic这个工具,这是qt继承的一个工具,它可以利用ui生产.h文件。
uic dialog.ui –o ui_dialog.h
就生产了下面的ui_dialog.h文件:
#ifndef UI_DIALOG_H
#define UI_DIALOG_H
#include
#include
#include
#include
#include
#include
#include
#include
QT_BEGIN_NAMESPACE
class Ui_Dialog
{
public:
QLabel *label;
QPushButton *pushButton;