Dynamic Dialogs

Dynamic dialogs are dialogs that are created from a Qt Designer .ui file at runtime. Dynamic dialogs are not converted into C++ code by uic. Instead, the .ui file is loaded at run-time using the QWidgetFactory class, in the following way:

QDialog *sortDialog = (QDialog *) QWidgetFactory::create("sortdialog.ui");

We can access the form's child widgets using QObject::child():

QComboBox *primaryColumnCombo = (QComboBox *) sortDialog->child("primaryColumnCombo", "QComboBox");

The child() function returns a null pointer if the dialog has no child that matches the given name and type.

The QWidgetFactory class is located in a separate library. To use QWidgetFactory from a Qt application, we must add this line to the application's .pro file:

LIBS += -lqui

This syntax works on all platforms, even though it has a definite Unix flavor.

Dynamic dialogs make it possible to change the layout of the form without recompiling the application. For a complete example of an application that uses a dynamic dialog, see the "Subclassing and Dynamic Dialogs" chapter in the Qt Designer manual.

Категории