文章原创,转载请注明链接
Qt中ui文件主要包括3种方式:直接使用法,单继承法和多继承法。
其中直接使用法和单继承法是先单纯地通过QtDesignor设计好界面以及控件信号等保存为ui文件,然后在需要ui的地方(通常是对话框等创建之前)通过UI::引用并创建UI中的控件的对象,如UI::Dialog ui,然后再创建了QDialog对话框dialog对象(dialog为ui中的对象名)之后为其套上设计的ui,即ui.setupUi(dialog),对话框显示时则和设计的ui中一样了。
单继承法这种方式也是QtCreator在创建相应的Qt GUI应用时默认的使用方式。
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
}
对应dialog.h文件内容如下:
#include <QDialog>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
private:
Ui::Dialog *ui;
};
其中Dialog类声明为QDialog单继承,并且将其本身声明了一个私有的指针,然而在dialog.cpp中内容如下:
#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
}
Dialog::~Dialog()
{
delete ui;
}
构造函数的定义QDialog(parent)和ui(new Ui::Dialog)初始化列表,即完成了界面类的创建,ui指针的初始化,调用父类QDialog构造函数,创建Dialog。然后就可以通过ui指针来完成对界面的操作和控制。ui->setupUi(this);完成了界面的设置。
而多继承法则是直接将需要ui的Dialog等在定义时通过QDialog和UI类一起继承构建对应的Dialog等类,然后在该类的构造函数中通过setupUi(this)套上/设置ui即可。
参考文献:
吴迪.零基础学Qt4编程
成洁,卢紫毅.Linux窗口程序设计—Qt4精彩实例分析