Класс QScrollBar
Виджет QScrollBar предоставляет вертикальную или горизонтальную полосу прокрутки. Подробнее...
| Заголовок: | #include <QScrollBar> |
| qmake: | QT += widgets |
| Наследует: | QAbstractSlider |
Открытые функции
| QScrollBar(QWidget *parent = nullptr) | |
| QScrollBar(Qt::Orientation orientation, QWidget *parent = nullptr) | |
| virtual | ~QScrollBar() |
Переопределённые открытые функции
| virtual bool | event(QEvent *event) override |
| virtual QSize | sizeHint() const override |
- 21 открытые функции унаследованы от QAbstractSlider
- 214 открытых функций унаследованы от QWidget
- 31 открытых функций унаследованы от QObject
- 14 открытых функций унаследованы от QPaintDevice
Статические открытые члены
| const QMetaObject | staticMetaObject |
- 5 статических открытых членов унаследованы от QWidget
- 9 статических открытых членов унаследованы от QObject
Защищённые функции
| void | initStyleOption(QStyleOptionSlider *option) const |
Переопределённые защищённые функции
| virtual void | contextMenuEvent(QContextMenuEvent *event) override |
| virtual void | hideEvent(QHideEvent *) override |
| virtual void | mouseMoveEvent(QMouseEvent *e) override |
| virtual void | mousePressEvent(QMouseEvent *e) override |
| virtual void | mouseReleaseEvent(QMouseEvent *e) override |
| virtual void | paintEvent(QPaintEvent *) override |
| virtual void | sliderChange(QAbstractSlider::SliderChange change) override |
| virtual void | wheelEvent(QWheelEvent *event) override |
- 8 защищённых функций унаследованы от QAbstractSlider
- 35 защищённых функций унаследованы от QWidget
- 9 защищённых функций унаследованы от QObject
- 1 защищённая функция унаследована от QPaintDevice
Дополнительные унаследованные члены
- 11 свойств унаследованы от QAbstractSlider
- 59 свойств унаследованы от QWidget
- 1 свойства унаследовано от QObject
- 3 публичных слотов унаследованы от QAbstractSlider
- 19 публичных слотов унаследованы от QWidget
- 1 публичный слот унаследован от QObject
- 6 сигналов унаследованы от QAbstractSlider
- 3 сигнала унаследованы от QWidget
- 2 сигнала унаследованы от QObject
- 1 защищённый слот унаследован от QWidget
Подробное описание
Виджет QScrollBar предоставляет вертикальную или горизонтальную полосу прокрутки.
Полоса прокрутки — это элемент управления, который позволяет пользователю получить доступ к частям документа, которые больше, чем используемый для его отображения виджет. Она предоставляет визуальное представление текущего положения пользователя в документе и размера документа, который отображается. Полосы прокрутки обычно оснащены другими элементами управления, которые позволяют более точно перемещаться. Qt отображает полосы прокрутки таким образом, который подходит для каждой платформы.
Если вам нужно предоставить прокручиваемый вид на другой виджет, удобнее использовать класс QScrollArea, поскольку он предоставляет виджет области просмотра и полосы прокрутки. QScrollBar полезен, если вам нужно реализовать подобную функциональность для специализированных виджетов, использующих QAbstractScrollArea; например, если вы решили унаследовать от QAbstractItemView. В большинстве других ситуаций, где используется элемент управления ползунком для получения значения в заданном диапазоне, класс QSlider может быть более подходящим для ваших потребностей.
Полосы прокрутки обычно включают четыре отдельных элемента управления: ползунок, стрелки прокрутки и элемент управления страницей.
|
Каждая полоса прокрутки имеет значение, которое указывает, насколько ползунок удален от начала полосы прокрутки; это значение получается с помощью value() и устанавливается с помощью setValue(). Это значение всегда находится в диапазоне значений, определённых для полосы прокрутки, от minimum() до maximum() включительно. Диапазон допустимых значений может быть установлен с помощью setMinimum() и setMaximum(). При минимальном значении верхний край ползунка (для вертикальной полосы прокрутки) или левый край (для горизонтальной полосы прокрутки) будет в верхнем (или левом) конце полосы прокрутки. При максимальном значении нижний (или правый) край ползунка будет в нижнем (или правом) конце полосы прокрутки.
Длина ползунка обычно связана со значением шага страницы и обычно представляет собой пропорцию области документа, отображаемой в прокручиваемом представлении. Шаг страницы — это величина изменения значения при нажатии пользователем клавиш Page Up и Page Down и устанавливается с помощью setPageStep(). Меньшие изменения значения, определяемые шагом строки, выполняются с помощью клавиш курсора, и эта величина устанавливается с помощью setSingleStep().
Обратите внимание, что диапазон используемых значений не зависит от фактического размера виджета полосы прокрутки. Вам не нужно учитывать это при выборе значений для диапазона и шага страницы.
Диапазон значений, указанный для полосы прокрутки, часто определяется иначе, чем для QSlider, поскольку необходимо учитывать длину ползунка. Если у нас есть документ с 100 строками, и мы можем отобразить только 20 строк в виджете, мы можем создать полосу прокрутки с шагом страницы 20, минимальным значением 0 и максимальным значением 80. Это даст нам полосу прокрутки с пятью "страницами".
| Взаимосвязь между длиной документа, диапазоном значений, используемых в полосе прокрутки, и шагом страницы проста во многих распространенных ситуациях. Диапазон значений полосы прокрутки определяется вычитанием выбранного шага страницы из некоторого значения, представляющего длину документа. В таких случаях полезна следующая формула: длина документа = maximum() - minimum() + pageStep(). |
QScrollBar предоставляет только целочисленные диапазоны. Обратите внимание, что хотя QScrollBar обрабатывает очень большие числа, полосы прокрутки на текущих экранах не могут полезно представлять диапазоны выше примерно 100 000 пикселей. За пределами этого становится трудно пользователю управлять ползунком с помощью клавиатуры или мыши, а стрелки прокрутки будут иметь ограниченное применение.
ScrollBar наследует полную группу сигналов от QAbstractSlider:
- valueChanged() генерируется, когда значение полосы прокрутки изменилось. Флаг tracking() определяет, генерируется ли этот сигнал во время взаимодействия пользователя.
- rangeChanged() генерируется, когда диапазон значений полосы прокрутки изменился.
- sliderPressed() генерируется, когда пользователь начинает перетаскивать ползунок.
- sliderMoved() генерируется, когда пользователь перетаскивает ползунок.
- sliderReleased() генерируется, когда пользователь отпускает ползунок.
- actionTriggered() генерируется, когда полоса прокрутки меняется пользователем или с помощью функции triggerAction().
Полосу прокрутки можно управлять с помощью клавиатуры, но она имеет значение focusPolicy() по умолчанию Qt::NoFocus. Используйте setFocusPolicy(), чтобы включить взаимодействие с полосой прокрутки с помощью клавиатуры:
- Клавиши влево/вправо перемещают горизонтальную полосу прокрутки на один шаг.
- Клавиши вверх/вниз перемещают вертикальную полосу прокрутки на один шаг.
- PageUp перемещает вверх на одну страницу.
- PageDown перемещает вниз на одну страницу.
- Home перемещает к началу (минимуму).
- End перемещает к концу (максимуму).
Сам ползунок можно управлять, используя функцию triggerAction() для имитации взаимодействия пользователя с элементами управления полосой прокрутки. Это полезно, если у вас есть несколько различных виджетов, использующих общий диапазон значений.
Большинство стилей GUI используют значение pageStep() для расчёта размера ползунка.
См. также QScrollArea, QSlider, QDial, QSpinBox, Справочник по разработке графического интерфейса пользователя: Полоса прокрутки и Пример слайдеров.
Документация по членам-функциям
QScrollBar::QScrollBar(QWidget *parent = nullptr)
Создаёт вертикальную полосу прокрутки.
Аргумент parent передаётся конструктору QWidget.
Значение minimum по умолчанию равно 0, maximum равно 99, с размером singleStep 1 и pageStep 10, и начальное значение value равно 0.
QScrollBar::QScrollBar(Qt::Orientation orientation, QWidget *parent = nullptr)
Создаёт полосу прокрутки с заданным orientation.
Аргумент parent передаётся конструктору QWidget.
Значение minimum по умолчанию равно 0, maximum равно 99, с размером singleStep 1 и pageStep 10, и начальное значение value равно 0.
[virtual] QScrollBar::~QScrollBar()
Удаляет полосу прокрутки.
[override virtual protected] void QScrollBar::contextMenuEvent(QContextMenuEvent *event)
Переопределено из QWidget::contextMenuEvent().
[override virtual] bool QScrollBar::event(QEvent *event)
Переопределено из QAbstractSlider::event().
[override virtual protected] void QScrollBar::hideEvent(QHideEvent *)
Переопределено из QWidget::hideEvent().
[protected] void QScrollBar::initStyleOption(QStyleOptionSlider *option) const
Инициализирует option значениями из этого QScrollBar. Этот метод полезен для подклассов, когда им нужен QStyleOptionSlider, но они не хотят заполнять всю информацию сами.
См. также QStyleOption::initFrom().
[override virtual protected] void QScrollBar::mouseMoveEvent(QMouseEvent *e)
Переопределено из QWidget::mouseMoveEvent().
[override virtual protected] void QScrollBar::mousePressEvent(QMouseEvent *e)
Переопределено из QWidget::mousePressEvent().
[override virtual protected] void QScrollBar::mouseReleaseEvent(QMouseEvent *e)
Переопределено из QWidget::mouseReleaseEvent().
[override virtual protected] void QScrollBar::paintEvent(QPaintEvent *)
Переопределено из QWidget::paintEvent().
[override virtual] QSize QScrollBar::sizeHint() const
Переопределено из QWidget::sizeHint().
[override virtual protected] void QScrollBar::sliderChange(QAbstractSlider::SliderChange change)
Переопределено из QAbstractSlider::sliderChange().
[override virtual protected] void QScrollBar::wheelEvent(QWheelEvent *event)
Переопределено из QAbstractSlider::wheelEvent().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qscrollbar.html