Шаг 44.
Библиотека Qt.
Класс QSlider

    На этом шаге рассмотрим класс ползунка QSlider.

    Ползунок позволяет довольно комфортно выполнять настройки некоторых параметров приложения. Класс QSlider ползунка определен в заголовочном файле QSlider.

    Класс QSlider содержит метод, управляющий размещением рисок (шкалы) ползунка. Риски очень важны при отображении ползунка. Они дают пользователю визуально более четкое представление о местонахождении и показывают шаг. Возможные значения, которые можно передать в метод setTickPosition(), приведены в табл. 1.

Таблица 1. Значения перечисления TickPosition класса QSlider
Константа
Внешний вид
Описание
NoTicks
Ползунок без рисок
TicksAbove
Отображение рисок на верхней стороне ползунка
TicksBelow
Отображение рисок на нижней стороне ползунка
TicksBothSides
Отображение рисок на верхней и нижней сторонах ползунка

    Файлы приложения, демонстрирующего значения перечисления TickPosition класса QSlider можно взять здесь.

    Метод setTickInterval() задает шаг рисования рисок. Не следует задавать большое количество рисок, т. к. это приведет к появлению сплошной серой линии и не принесет никакой пользы.

    Окно приложения, изображенное на рис. 1, содержит виджеты ползунка и надписи, причем текст надписи изменяется в зависимости от положения ползунка.


Рис.1. Пример работы ползунка

    В листинге приводится текст файла приложения, окно которого показано на рис. 1:

#include <QApplication>
#include <QWidget>
#include <QHBoxLayout>
#include <QSlider>
#include <QLabel>
int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    app.setApplicationDisplayName("Ползунок");
    QWidget    wgt;
    //создаем виджет ползунка
    QSlider* ps1 = new QSlider(Qt::Vertical);
    //устнавливаем диапазон значений
    ps1->setRange(0, 9);
    //устанавливаем шаг страницы
    ps1->setPageStep(1);
    //задаем стартовое значение
    ps1->setValue(2);
    //задаем шаг для рисования рисок
    ps1->setTickInterval(2);
    //установим риски снизу и сверху
    ps1->setTickPosition(QSlider::TicksBothSides);
    //создаем надписи
    QLabel *l1=new QLabel ("");
    l1->setAlignment(Qt::AlignCenter);
    l1->setFrameStyle(QFrame::Panel|QFrame::Plain);
    QLabel *l=new QLabel ("2");
    l->setAlignment(Qt::AlignCenter);
    l->setFrameStyle(QFrame::Panel|QFrame::Plain);
    //методом connect() сигнал ползунка
    //valueChanged(int) соединяется со слотом
    //надписи setNum(int)
    QObject::connect(ps1, SIGNAL(valueChanged(int)),l, SLOT(setNum(int)));
    //выполняется размещение элементов на поверхности
    //виджета wgt при помощи горизонтальной компоновки
    QHBoxLayout* phbxL = new QHBoxLayout;
    phbxL->setMargin(2);
    phbxL->setSpacing(7);
    phbxL->addWidget(l1);
    phbxL->addWidget(ps1);
    phbxL->addWidget(l);
    wgt.setLayout(phbxL);

    wgt.show();

    return app.exec();
}

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

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




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