qt 怎么根据ui文件动态创建QWIdget窗口部件?

 我来答
riyue1108
2011-01-13 · TA获得超过394个赞
知道小有建树答主
回答量:435
采纳率:0%
帮助的人:352万
展开全部
动态对话框是在程序运行时用 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
使用动态对话框不用重新编译程序就能够改变对话框的布局。
mileelove
2011-01-13 · TA获得超过454个赞
知道小有建树答主
回答量:183
采纳率:0%
帮助的人:326万
展开全部
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生成相应的资源文件;
完成以上步骤之后开始进行编译链接等步骤,生成可执行程序。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wulinwulin76
2011-01-13 · TA获得超过308个赞
知道小有建树答主
回答量:380
采纳率:0%
帮助的人:347万
展开全部
ui文件是根据form文件自动生成的C++文件,form文件通过designer编辑。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式