Шаг 45.
Библиотека Qt.
Класс QScrollBar

    На этом шаге рассмотрим класс виджета полосы прокрутки QScrollBar.

    Полоса прокрутки — это важная составляющая практически любого пользовательского интерфейса. Она интуитивно воспринимается пользователем, и с ее помощью отображаются текстовые или графические данные, по размерам превышающие отведенную для них область. Используя указатель текущего положения полосы прокрутки, можно перемещать данные в видимую область. Он показывает относительную позицию видимой части объекта, благодаря которой можно получить представление о размере самих данных. Класс QScrollBar является реализацией виджета полосы прокрутки. Он определен в заголовочном файле QscrollBar и не содержит никаких дополнительных методов и сигналов, расширяющих определения класса QAbstractSlider.

    Отдельно полосы прокрутки используются очень редко. Они встроены в виджет QAbstractScrollArea. Поэтому если вы намерены воспользоваться классом полосы прокрутки QScrollBar, то не исключено, что лучшим вариантом может оказаться использование одного из виджетов, наследующих базовый класс для видовой прокрутки QAbstractScrollArea. У объектов, унаследованных от класса QScrollBar, можно вызвать контекстное меню с параметрами навигации по умолчанию (рис. 1).


Рис.1. Контекстное меню полосы прокрутки

    Виджет полосы прокрутки имеет минимальное и максимальное значение, текущее значение и ориентацию. Перемещение указателя текущего положения осуществляется с помощью левой кнопки мыши. В качестве альтернативы можно просто нажать на кнопки стрелок, расположенных на концах полосы прокрутки. Окно приложения, показанное на рис. 2, состоит из электронного индикатора и полосы прокрутки. Значение, отображаемое электронным индикатором, изменяется в зависимости от положения указателя текущего положения.


Рис.2. Окно приложения, демонстрирующее работу полосы прокрутки

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

#include <QApplication>
#include <QVBoxLayout>
#include <QWidget>
#include <QLCDNumber>
#include <QScrollBar>

int main (int argc, char** argv)
{
    QApplication app(argc, argv);
    app.setApplicationDisplayName("Полоса прокрутки");
    QWidget wgt;
    //создаются виджеты электронного индикатора (указатель plcd)
    QLCDNumber* plcd = new QLCDNumber(4);
    //и полосы прокрутки (указатель phsb)
    QScrollBar* phsb = new QScrollBar(Qt::Horizontal);
    //сигнал valueChanged() полосы прокрутки соединяется
    //со слотом display() электронного индикатора,
    //служащего для отображения значений целого типа,
    //при помощи метода connect()
    QObject::connect(phsb, SIGNAL(valueChanged(int)),plcd, SLOT(display(int)));
    //виджеты электронного индикатора и полосы прокрутки
    //размещаются вертикально, на поверхности виджета wgt,
    //при помощи объекта класса QVBoxLayout
    QVBoxLayout* pvbxLayout = new QVBoxLayout;
    pvbxLayout->addWidget(plcd);
    pvbxLayout->addWidget(phsb);
    wgt.setLayout(pvbxLayout);
    wgt.resize(250, 150);
    wgt.show();
    return app.exec();
}

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

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




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