На этом шаге рассмотрим класс виджета установщика 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();
}Файлы приложения можно взять здесь.
На следующем шаге рассмотрим однострочное текстовое поле.