qt 怎么根据ui文件动态创建QWIdget窗口部件?
发布网友
发布时间:2022-04-18 05:41
我来回答
共3个回答
热心网友
时间:2022-04-18 07:10
动态对话框是在程序运行时用 Qt Designer 的.ui 文件创建。不用 uic工具把.ui 文件变成
等价的 c++代码,而是在程序时使用类 QUiLoader 加载.ui文件,例如下面的代码:
QUiLoader uiLoader;
QFile file("sortdialog.ui");
QWidget *sortDialog = uiLoader.load(&file);
if (sortDialog) {
...
}
子控件可以用 QObject::findChild<T>()得到
QComboBox *primaryColumnCombo =
sortDialog->findChild<QComboBox *>("primaryColumnCombo");
if (primaryColumnCombo) { ...
}
findChild<T>()是模板成员函数,得到类型为 T 的给定名字的子控件的指针。由于编
译器的原因,用 MSVC6 是得不到的。如果使用的是 MSVC6,那么可以使用全局函数
qFindChild<T>()。
QUiLoader 类在一个单独的链接库中,如果在一个应用程序中使用了 QUiLoader,
必须在这个程序的.pro文件中添加下面这样的代码:
CONFIG += uitools
使用动态对话框不用重新编译程序就能够改变对话框的布局。
热心网友
时间:2022-04-18 08:28
qmake -project
qmake
make
qt使用uic工具对xxx.ui文件进行分析,并生成相应的ui_xxx.h文件
例如你用qt designer新建了一个名为test.ui的文件,你可以使用命令行方式
(window下)或者终端(Linux下)输入下面这行语句并执行
uic -o ui_test.h test.ui
执行完成后,ui_test.h中即使生成的头文件的代码。
而qt自动生成ui头文件是在make这一步骤中完成的。
qt的编译过程可以分成三个部分,每个步骤的执行语句如下所示
qmake -project
该步骤生成相应的工程文件 xxx.pro
qmake
该步骤生成Makefile,以及其他的相关文件以及文件夹;
make
该步骤会执行Makefile调用3个工具进行相关的处理:
如果存在信号和槽,将调用moc生成相应的moc文件,对信号和槽进行关联;
如果存在ui文件,将调用uic生成相应的ui头文件;
如果存在资源文件,将调用rcc生成相应的资源文件;
完成以上步骤之后开始进行编译链接等步骤,生成可执行程序。
热心网友
时间:2022-04-18 10:03
ui文件是根据form文件自动生成的C++文件,form文件通过designer编辑。