动态对话框是运行时由Qt Designer的.ui文件创建的对话框。它没有被uic转换成C++代码,替代之,.ui
文件在运行时使用QWidgetFacroty类调用,如下方法所示:
QDialog *sortDialog = (QDialog *)QWidgetFactory::create("sortdialog.ui");
我们可以使用QObject::child()来访问窗体的子组件
QComboBox *primaryColnmnCombo = (QComboBox *)sortDialog->child("primaryColumnCombo","QComboBox");
如果对话框没有子组件能匹配给出的名字和类型,则child()函数返回一个空指针。
QWidgetFactory类位于单独的库。要在Qt应用程序中使用QWidgetFactory,我们必须在.pro文件中添加这样一行:
LIBS += -lqui
这个语法工作在所有平台,尽管它有明确的Unix风味。
动态对话框使改变窗体布局而不用重编译应用程序称为可能。一个完整的使用动态对话框的应用程序的范
例,请看Qt Designer手册的"Subclassing and Dynamic Dialogs"这一章。