Шаг 46.
Библиотека Qt.
Класс QDial

    На этом шаге рассмотрим класс виджета установщика 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();
}

    Файлы приложения можно взять здесь.

    На следующем шаге рассмотрим однострочное текстовое поле.




Предыдущий шаг Содержание Следующий шаг