Динамическая загрузка ui-ресурса (examples-qt/07/07.cpp)
#include <QtGui>
#include <QtUiTools>
int main(int argc, char *argv[]) { QApplication app(argc, argv);
QTextCodec *codec = QTextCodec::codecForName("CP1251");
QTextCodec::setCodecForTr(codec);
QUiLoader uiLoader; QFile file("dialog.ui");
file.open(QFile::ReadOnly);
QWidget *dlg = uiLoader.load(&file);
file.close();
if (dlg) { QComboBox *cb = dlg->
findChild<QComboBox*>
("cb");
cb->
addItem(QObject::tr("Первый"));
cb->
addItem(QObject::tr("Второй"));
cb->
addItem(QObject::tr("Третий"));
cb->
setCurrentIndex(2);
cb->
setEditable(true);
cb->
setInsertPolicy(QComboBox::InsertAtBottom);
QSpinBox *sb = dlg->
findChild<QSpinBox*>
("sb");
sb->
setValue(5);
dlg->
findChild<QCheckBox*>
("chb")->
setCheckState(Qt::Checked);
// .......
dlg->
findChild<QRadioButton*>
("rb2")->
setChecked(true);
dlg->
show();
return app.exec();
} else return 1; }
Для обращения к элементам диалога при динамической загрузке используется метод parent->
findChild<Тип *>
("ИмяЭлемента") или функция qFindChild<Тип *>
(parent, "ИмяЭлемента")
Второй вариант предназначен для компиляторов, которые не поддерживают шаблоны методов (как, например, Microsoft Visual C++ 6.0).