QT 4: программирование GUI на С++ | страница 36
Сначала создаем файл sortdialog.h со следующим содержимым:
>01 #ifndef SORTDIALOG_H
>02 #define SORTDIALOG_H
>03 #include
>04 #include "ui_sortdialog.h"
>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
Затем создаем sortdialog.cpp:
>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 }
Конструктор прячет ту часть диалогового окна, где располагаются поля второго и третьего ключей. Он также устанавливает свойство sizeConstraint менеджера компоновки формы на значение QLayout::SetFixedSize, не позволяя пользователю изме-
От составителя. Страница №42 в исходном DjVu была пропущена! У кого есть — вставьте.
Создавать в Qt другой распространенный тип изменяющихся диалоговых окон, многостраничные диалоговые окна, даже еще проще как при ручном кодировании, так и при использовании Qt Designer. Такие диалоговые окна можно строить различными способами:
• можно непосредственно воспользоваться виджетом окно с вкладками QTabWidget. Здесь сверху окна имеется полоска вкладок, которая находится под управлением стека QStackedWidget;
• можно совместно использовать список QListWidget и стек QStackedWidget, где текущий элемент списка будет определять страницу, показываемую стеком QStackedWidget, обеспечив связь сигнала QListWidget::currentRowChanged() со слотом QStackedWidget::setCurrentIndex();
• можно виджет древовидной структуры QTreeWidget совместно использовать со стеком