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