工作流程
Xml 格式的 X.ui 文件 -> 预编译为 ui_X.h 文件 -> 通过 namespace Ui 引入项目 X.h 文件中
- X.ui 是由 QT Designer 生成的界面文件.
- ui_X.h 是由预编译器生成的中间文件, 此文件不会显示在项目文件中.
- X.h 中通过定义 namespace Ui 前导声明引用 ui_X.h 文件中的 X 类, 同时定义私有的 X 类指针 ui.
- X.cpp 则是通过直接 #include ui_X.h 引用 X 类. 并在构造和析构函数中通过 ui 指针新建/初始化/销毁对象.
代码分析
<ui version="4.0">
<!-- 为了区分一下, 这里MainWindow改为MainWindow1. 这变量名是用于项目引用的, 不能随便更改.
如果更改这个变量名就要相应更改项目中所有对此 Wedget 的引用名. 即: 预编译器每次都会根据此变量名自动生成相应的 Wedget 实例引用名.
注意: 这个名子使用QT Designer 编辑后会更改回与类一个名子 -->
<class>MainWindow1</class>
<!-- 为了区分一下, 这里MainWindow改为MainWindow2.
这变量名是用于ui_X.h 文件中实现初始化函数时使用的变量名, 虽然预编译器会每次使用它, 但不会影响项目程序的调用, 可以随便设一个不重复的值 -->
<widget class="QMainWindow" name="MainWindow2" >
<!-- 这个是用于在初始化函数中设置属性值用的. 这个 name 值是属性名, 不能随便更改, 它需要指明要设置的 Wedget 的属性名, 乱改会产生没有此属性的错误 -->
<property name="geome