На этом шаге рассмотрим класс виджета установщика QDial.
Класс QDial виджета установщика определен в заголовочном файле QDial. Этот виджет очень похож на крутящийся регулятор громкости радиоприемника, которым можно манипулировать при помощи мыши или клавиш курсора. По своим функциональным возможностям он похож на ползунок. Разница в том, что круглая форма этого виджета позволяет пользователю после достижения максимального значения сразу перейти к минимальному, и наоборот. Для разрешения или запрета прокручивания служит слот setWrapping().
За отображение рисок отвечают метод setNotchTarget(), который устанавливает их количество, и слот setNotchesVisible(), который управляет их видимостью.
Окно приложения, представленное на рис. 1, содержит виджеты установщика и индикатора прогресса. Состояние последнего зависит от местоположения стрелки установщика.
Рис.1. Окно демонстрации работы установщика
В листинге приводится текст файла приложения, окно которого показано на рис. 1:
#include <QApplication> #include <QWidget> #include <QDial> #include <QVBoxLayout> #include <QProgressBar> int main (int argc, char** argv) { QApplication app(argc, argv); app.setApplicationDisplayName("Установщик"); QWidget wgt; //создаются виджеты //установщика (указатель pd) QDial* pd = new QDial; //и индикатора прогресса (указатель ppb) QProgressBar* ppb = new QProgressBar; //вызовом метода setRange() //виджета установщика задается диапазон значений //от 0 до 100 pd->setRange(0, 100); //метод setNotchTarget() устанавливает шаг рисования рисок равный 10 pd->setNotchTarget(10); //слот setNotchesVisible() делает их видимыми pd->setNotchesVisible(true); //сигнал виджета установщика valueChanged(int) //соединяется при помощи метода connect() //со слотом индикатора прогресса setProgress(int) QObject::connect(pd, SIGNAL(valueChanged(int)),ppb, SLOT(setValue(int))); //виджеты установщика и индикатора прогресса //при помощи объекта класса QVBoxLayout //размещаются вертикально QVBoxLayout* pvbL = new QVBoxLayout; pvbL->addWidget(ppb); pvbL->addWidget(pd); wgt.setLayout(pvbL); wgt.resize(280, 280); wgt.show(); return app.exec(); }
Файлы приложения можно взять здесь.
На следующем шаге рассмотрим однострочное текстовое поле.