动态对话框是指在运行时由.ui文件创建的对话框。它不是用uic将.ui文件转化为c++代码,而是使用类QuiLoader在运行时将文件加载。使用示例如下:
QUiLoader uiLoader;
QFile file("sortdialog.ui");
QWidget *sortDialog = uiLoader.load(&file);
if (sortDialog) {
...
}
可以使用QObject::findChild<T>()方法来方法来访问动态对话框中的子组件。例如:
QComboBox *primaryColumnCombo =
sortDialog->findChild<QComboBox *>("primaryColumnCombo");
if (primaryColumnCombo) {
...
}
注意,该方法不适用于MSVC6,在MSVC6中,就使用全局函数qFindChild<T>(),它的使用方式与QObject::findChild<T>()一致。另外,QuiLoader类位于一个单独的库中,要在一个Qt应用程序中使用该类,必须在工程文件中添加如下信息:
CONFIG += uitools