Программирование на C++ с использованием библиотеки Qt4



         

Листинг 15. Динамическая загрузка 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).




Содержание  Назад