05 class SortDialog : public QDialog, public Ui::SortDialog
06 {
07 Q_OBJECT
08 public:
09 SortDialog(QWidget *parent = 0);
10 void setColumnRange(QChar first, QChar last);
11 };
12 #endif
Затем создаем
01 #include
02 #include "sortdialog.h"
03 SortDialog::SortDialog(QWidget *parent)
04 : QDialog(parent)
05 {
06 setupUi(this);
07 secondaryGroupBox->hide;
08 tertiaryGroupBox->hide;
09 layout->setSizeConstraint(QLayout::SetFixedSize);
10 setColumnRange('А', 'Z');
11 }
12 void SortDialog::setColumnRange(QChar first, QChar last)
13 {
14 primaryColumnCombo->clear;
15 secondaryColumnCombo->clear;
16 tertiaryColumnCombo->clear;
17 secondaryColumnCombo->addItem(tr("None"));
18 tertiaryColumnCombo->addItem(tr("None"));
19 primaryColumnCombo->setMinimumSize(
20 secondaryColumnCombo->sizeHint);
21 QChar ch = first;
22 while (ch <= last) {
23 primaryColumnCombo->addItem(QString(ch));
24 secondaryColumnCombo->addItem(QString(ch));
25 tertiaryColumnCombo->addItem(QString(ch));
26 ch = ch.unicode + 1;
27 }
28 }
Конструктор прячет ту часть диалогового окна, где располагаются поля второго и третьего ключей. Он также устанавливает свойство
Создавать в Qt другой распространенный тип изменяющихся диалоговых окон, многостраничные диалоговые окна, даже еще проще как при ручном кодировании, так и при использовании
• можно непосредственно воспользоваться виджетом окно с вкладками
• можно совместно использовать список
• можно виджет древовидной структуры
Класс стека
Динамические диалоговые окна
Динамическими называются диалоговые окна, которые создаются на основе файлов
QUiLoader uiLoader;
QFile file("sortdialog.ui");
QWidget *sortDialog = uiLoader.load(&file);
if (sortDialog) {
…
}
Мы можем осуществлять доступ к дочерним виджетам формы при помощи функции
QComboBox *primaryColumnCombo =
sortDialog->findChild
if (primaryColumnCombo) {
…
}