Qt中用户界面的User Interface Compiler(uic)机制的相关说明
2015-11-04 20:48
369 查看
Qt中用户界面的User Interface Compiler(uic)机制的相关说明
uic读取由QtDesigner生成的XML格式的用户界面定义文件(.ui文件),然后生成其对应的C++头文件。
若界面文件为ZZZ.ui,则对应生成的头文件为ui_ZZZ.h。默认情况下:
①基于QMainWindow的程序,会生成一个叫ui_mainwindow.h的头文件
②基于QDialog的程序,会生成一个叫ui_dialog.h的头文件
③基于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
:
namespaceUi{
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,需要手动修改的地方有三个,
在上文中我已分别用下划线标出了,只需将这三个地方修改为主窗口的新的objectName就行了。
uic读取由QtDesigner生成的XML格式的用户界面定义文件(.ui文件),然后生成其对应的C++头文件。
若界面文件为ZZZ.ui,则对应生成的头文件为ui_ZZZ.h。默认情况下:
①基于QMainWindow的程序,会生成一个叫ui_mainwindow.h的头文件
②基于QDialog的程序,会生成一个叫ui_dialog.h的头文件
③基于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
:
namespaceUi{
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,需要手动修改的地方有三个,
在上文中我已分别用下划线标出了,只需将这三个地方修改为主窗口的新的objectName就行了。
相关文章推荐
- UE激活
- CYC-UISearchBar 点击空白回收键盘
- UILabel自动适应尺寸
- LeetCode300——Longest Increasing Subsequence
- 2015ACM/ICPC亚洲区长春站 E hdu 5531 Rebuild
- hdu1005 Number Sequence
- BLE UUID
- iOS求生之路(四)UICollectionView的用法
- hdoj--1171--Number Sequence(KMP)
- hdoj--1171--Number Sequence(KMP)
- 修改IOS中UISearchBar的取消按钮背景、搜索内容输入文本框背景和UISearchBar的背景
- 《iOS Human Interface Guidelines》——Interactivity and Feedback
- 反射访问属性或方法时将Accessible设置为true
- UIView 实例方法 Instance Methods(转)
- UITableViewCell高亮时,其子视图中有高亮的对象也高亮了
- Fuel 多台物理机组成单控制节点
- java集合源码解读---Queu和Stack的数组和链式实现
- POJ1679-The Unique MST
- iOS监听UITextView、UITextField键盘删除键
- iOS--错误集锦--UI控件不显示原因之一