Компоновка виджетов
В данном разделе мы создадим небольшое приложение, которое демонстрирует применение менеджеров компоновки для размещения виджетов в окне и использование сигналов и слотов для синхронизации работы двух виджетов. Приложение предлагает пользователю указать свой возраст, что можно сделать при помощи либо наборного счетчика (spin box), либо ползунка (slider).
Это приложение состоит из трех виджетов: QSpinBox, QSlider и QWidget. QWidget является главным окном приложения. Виджеты QSpinBox и QSlider помещены внутрь QWidget, и они являются дочерними виджетами по отношению к QWidget. С другой стороны, мы можем сказать, что QWidget является, родительским виджетом
по отношению к QSpinBox и QSlider. Сам QWidget не имеет родителя, потому что используется в качестве окна самого верхнего уровня. Конструкторы QWidget и все его подклассы принимают параметр QWidget *, задающий родительский виджет.

Рис. 1.4. Приложение Age (возраст)
Ниже приводится исходный код:
001 #include <QApplication>
002 #include <QHBoxLayout>
003 #include <QSlider>
004 #include <QSpinbox>
005 int main(int argc, char *argv[])
006 (' ''
007 ' " QApplication app(argc, argv);
8 QWidget *window = new QWidget;
9 winddw->setWindowTitle("Enter Your Age");
10 QSpinBox *spiiiBox = new QSpinBox;
11 QSlider *slider = new QSlider(Qt:horizontal);
12 spinBox->setRahge(0, 130);
13 slider->setRange(0, 130);
14 QObject: .-connect(spinBox, SIGNAL(valueChanged(int)),
15 slider, SL0T(setValue(int)));
16 QObject::conhect(slider, SIGNAL(valueChanged(int)),
17 spinBox, SL0T(setValue(int)));
18 spinBox->setValue(35)';
19 QHBox'Layout *layout = new QHBoxLayout;
20 layout->addWidget(spinBox);
21 layout->addWidget(slider);
22 window->setLayout(layout);
23 window->show();
24 return app.execO;
25 }
Строки 8 и 9 создают и настраивают виджет QWidget, который является главным окном приложения. Нами вызывается функция setWindowTitle() для вывода текстовой строки в заголовке окна.
Затем мы устанавливаем промежуток (в 6 пикселей) между дочерними виджета-ми и вокруг них.
Строки 10 и И создают виджеты QSpinBox и QSlider, а строки 12 и 13 устанавливают допустимый диапазон изменения их значений. Мы вполне можем допустить, что возраст человека не будет превышать 130 лет
<< назад вперед >>