当前位置 : 首页 » 文章分类 :  开发  »  Qt中用户界面的User Interface Compiler(uic)机制相关说明

Qt中用户界面的User Interface Compiler(uic)机制相关说明

uic读取由QtDesigner生成的XML格式的用户界面定义文件(.ui文件),然后生成其对应的C++头文件。
若界面文件为ZZZ.ui,则对应生成的头文件为ui_ZZZ.h。
默认情况下:

  • 1、基于QMainWindow的程序,会生成一个叫ui_mainwindow.h的头文件
  • 2、基于QDialog的程序,会生成一个叫ui_dialog.h的头文件
  • 3、基于QWidget的程序,会生成一个叫ui_widget.h的头文件

由Qt Creator自动完成的工作有如下:
(1)在生成的头文件中,首先会定义一个叫Ui_XXX的类,其中XXX是主窗口的objectName。
比如我将主窗口的objectName设为masikkk,则头文件中会定义类Ui_masikkk
此类中有所有控件的声明,以及setupUi(QMainWindow */QDialog */QWidget *)函数的定义。在setupUi()函数中,会定义控件的所有属性和行为。最后,会定义一个名为Ui的命名空间,里面声明一个类masikkk,此类继承自Ui_masikkk :

namespace Ui {
     class masikkk : public Ui_masikkk{};
}

(2)在主窗口的头文件中,会声明命名空间Ui :

namespace Ui{
    class masikkk;
}

并且在类的定义中声明一个私有的Ui::masikkk类的指针 * ui

Ui::masikkk * ui;

在构造函数实现时,会在参数列表中新生成一个Ui::masikkk类的对象赋给指针ui:

ui(new Ui::masikkk)

并在函数体内调用setupUi()函数,用主窗口的指针(this指针)作参数:

ui -> setupUi(this);

这样就实现了为程序加载界面。
注意:如果你在Qt Designer中更改了主窗口的objectName,则ui文件生成的头文件中也会相应自动修改,但在主窗口的头文件和实现文件中,不会自动将类名修改为新的objectName,需要手动修改的地方有三个,即(2)中代码块里的三个masikkk,只需将这三个地方修改为主窗口的新的objectName就行了。

上一篇 Qt通过ODBC连接数据库

下一篇 绫辻行人《杀人偶人馆》读后感

域名迁移公告
2017年12月20日起,本博客迁移到新域名madaimeng.com,旧域名masikkk.com不再更新内容,但将永久保持可访问!
阅读
480
阅读预计2分钟
创建日期 2013-03-09
修改日期 2017-07-13
类别
标签
百度推荐