На этом шаге рассмотрим класс QAbstractSlider.
Группа виджетов, относимых к элементам настройки, используется, как правило, для установки значений, не требующих большой точности, например — настройка громкости звука, скорости движения курсора (указателя) мыши, скроллинг содержимого окна и другие подобные действия.
Класс QAbstractSlider является базовым для всех виджетов настройки: ползунка (QSlider), полосы прокрутки (QScrollBar) и установщика (QDial). Все перечисленные далее возможности также доступны и во всех унаследованных от него классах. Его определение содержится в заголовочном файле QAbstractSlider.
Если требуется создать свой собственный виджет, то можно унаследовать этот класс и реализовать метод sliderChange(), который вызывается всякий раз при изменении значения.
Изменение положения
Классы виджетов, унаследованные от класса QAbstractSlider, могут быть как горизонтальными, так и вертикальными. Для изменения расположения используется слот setOrientation(), в который для задания горизонтального расположения передается значение Qt::Horizontal, а для вертикального — Qt::Vertical.
Установка диапазона
Для установки диапазона значений используется метод setRange(). В этот метод первым параметром передается минимально возможное значение (его нижняя граница), а вторым — задается его максимально возможное значение (верхняя граница). Также можно воспользоваться методами setMinimum() и setMaximum() соответственно. Например, для того чтобы задать диапазон от 1 до 10, можно поступить следующим образом:
psld->setRange(1, 10);
или
psld->setMinimum(1); psld->setMaximum(10);
Установка шага
При помощи метода setSingleStep() можно задать шаг, т. е. значение, на которое, например, ползунок сдвинется при нажатии на стрелки полосы прокрутки или на клавиши курсора клавиатуры.
Метод setPageStep() задает шаг для страницы. Перемещение страниц выполняется, например, для элемента ползунка при нажатии на область, находящуюся между стрелками и головкой ползунка или клавишами Page Up, Page Down.
Установка и получение значений
Для того чтобы установить какое-либо значение, необходимо воспользоваться слотом setValue(). Для получения текущего значения можно вызвать метод value(). Сигнал sliderMoved(int) передает актуальное значение положения и отправляется при изменении пользователем указателя текущего положения.
Сигнал valueChanged() посылается одновременно с сигналом sliderMoved(int) сразу после изменения положения ползунка и также передает измененное значение полосы прокрутки. Поведение сигнала изменяется вызовом метода setTracking(). Если передать ему значение false, это приведет к тому, что сигнал valueChanged() будет отправляться только при отпускании указателя текущего положения.
Чтобы узнать, отпустил ли пользователь указатель текущего положения ползунка или все еще удерживает его, можно присоединиться к сигналам sliderPressed() или sliderReleased().
На следующем шаге рассмотрим ползунок.