Spec-Zone.ru › Qt 5.6

Класс QScrollBar

Виджет QScrollBar предоставляет вертикальную или горизонтальную полосу прокрутки. Подробнее...

Заголовок: #include <QScrollBar>
qmake: QT += widgets
Наследуется от: QAbstractSlider
  • Список всех членов, включая унаследованные

Открытые функции

QScrollBar(QWidget *parent = Q_NULLPTR)
QScrollBar(Qt::Orientation orientation, QWidget *parent = Q_NULLPTR)
~QScrollBar()

Переопределённые открытые функции

virtual bool event(QEvent *event)
virtual QSize sizeHint() const
  • 21 открытых функций унаследовано от QAbstractSlider
  • 211 открытых функций унаследовано от QWidget
  • 31 открытых функций унаследовано от QObject
  • 14 открытых функций унаследовано от QPaintDevice

Защищённые функции

void initStyleOption(QStyleOptionSlider *option) const

Переопределённые защищённые функции

virtual void contextMenuEvent(QContextMenuEvent *event)
virtual void hideEvent(QHideEvent *)
virtual void mouseMoveEvent(QMouseEvent *e)
virtual void mousePressEvent(QMouseEvent *e)
virtual void mouseReleaseEvent(QMouseEvent *e)
virtual void paintEvent(QPaintEvent *)
virtual void sliderChange(SliderChange change)
virtual void wheelEvent(QWheelEvent *event)
  • 8 защищённых функций унаследовано от QAbstractSlider
  • 35 защищённых функций унаследовано от QWidget
  • 9 защищённых функций унаследовано от QObject
  • 1 защищённая функция унаследовано от QPaintDevice

Дополнительные унаследованные члены

  • 11 свойств унаследовано от QAbstractSlider
  • 58 свойств унаследовано от QWidget
  • 1 свойство унаследовано от QObject
  • 3 открытых слотов унаследовано от QAbstractSlider
  • 19 открытых слотов унаследовано от QWidget
  • 1 открытый слот унаследовано от QObject
  • 6 сигналов унаследовано от QAbstractSlider
  • 3 сигнала унаследовано от QWidget
  • 2 сигнала унаследовано от QObject
  • 5 статических открытых членов унаследовано от QWidget
  • 11 статических открытых членов унаследовано от QObject
  • 1 защищённый слот унаследовано от QWidget

Подробное описание

Виджет QScrollBar предоставляет вертикальную или горизонтальную полосу прокрутки.

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

Если вам нужно предоставить возможность прокрутки по другому виджету, может быть удобнее использовать класс QScrollArea, так как он предоставляет виджет области просмотра и полосы прокрутки. QScrollBar полезен, если вам нужно реализовать аналогичную функциональность для специализированных виджетов, использующих QAbstractScrollArea; например, если вы решите подклассировать QAbstractItemView. Для большинства других ситуаций, где элемент управления ползунком используется для получения значения в заданном диапазоне, класс QSlider может быть более подходящим.

Полосы прокрутки обычно включают четыре отдельных элемента управления: ползунок, стрелки прокрутки и элемент управления страницей.
  • а. Ползунок предоставляет способ быстро перейти к любой части документа, но не поддерживает точное перемещение по большим документам.
  • б. Стрелки прокрутки — это кнопки, которые можно использовать для точного перемещения к определенному месту в документе. Для вертикальной полосы прокрутки, связанной с текстовым редактором, они обычно перемещают текущее положение на одну "строку" вверх или вниз и корректируют положение ползунка на небольшое количество. В редакторах и списках "строка" может означать одну строку текста; в просмотрщике изображений — 20 пикселей.
  • в. Элемент управления страницей — это область, по которой перемещается ползунок (фон полосы прокрутки). Нажатие здесь перемещает полосу прокрутки к месту нажатия на одну "страницу". Это значение обычно равно длине ползунка.

Каждая полоса прокрутки имеет значение, которое указывает, насколько далеко ползунок находится от начала полосы прокрутки; это можно получить с помощью 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() для вычисления размера ползунка.

Screenshot of a Macintosh style scroll bar Полоса прокрутки, отображаемая в стиле виджетов Macintosh.
Screenshot of a Windows Vista style scroll bar Полоса прокрутки, отображаемая в стиле виджетов Windows Vista.
Screenshot of a Fusion style scroll bar Полоса прокрутки, отображаемая в стиле виджетов Fusion.

См. также QScrollArea, QSlider, QDial, QSpinBox, Руководство по разработке графического интерфейса пользователя: Полоса прокрутки и Пример ползунков.

Документация по функциям членов

QScrollBar::QScrollBar(QWidget *parent = Q_NULLPTR)

Создаёт вертикальную полосу прокрутки.

Аргумент parent передаётся конструктору QWidget.

Значение minimum по умолчанию равно 0, maximum равно 99, размер singleStep равен 1, размер pageStep равен 10, а начальное значение value равно 0.

QScrollBar::QScrollBar(Qt::Orientation orientation, QWidget *parent = Q_NULLPTR)

Создаёт полосу прокрутки с заданной orientation.

Аргумент parent передаётся конструктору QWidget.

Значение minimum по умолчанию равно 0, maximum равно 99, размер singleStep равен 1, размер pageStep равен 10, а начальное значение value равно 0.

QScrollBar::~QScrollBar()

Уничтожает полосу прокрутки.

[virtual protected] void QScrollBar::contextMenuEvent(QContextMenuEvent *event)

Переопределено из QWidget::contextMenuEvent().

[virtual] bool QScrollBar::event(QEvent *event)

Переопределено из QObject::event().

[virtual protected] void QScrollBar::hideEvent(QHideEvent *)

Переопределено из QWidget::hideEvent().

[protected] void QScrollBar::initStyleOption(QStyleOptionSlider *option) const

Инициализирует option значениями из этой полосы прокрутки QScrollBar. Этот метод полезен для подклассов, когда им нужен QStyleOptionSlider, но они не хотят заполнять всю информацию самостоятельно.

См. также QStyleOption::initFrom().

[virtual protected] void QScrollBar::mouseMoveEvent(QMouseEvent *e)

Переопределено из QWidget::mouseMoveEvent().

[virtual protected] void QScrollBar::mousePressEvent(QMouseEvent *e)

Переопределено из QWidget::mousePressEvent().

[virtual protected] void QScrollBar::mouseReleaseEvent(QMouseEvent *e)

Переопределено из QWidget::mouseReleaseEvent().

[virtual protected] void QScrollBar::paintEvent(QPaintEvent *)

Переопределено из QWidget::paintEvent().

[virtual] QSize QScrollBar::sizeHint() const

Переопределено из QWidget::sizeHint().

[virtual protected] void QScrollBar::sliderChange(SliderChange change)

Переопределено из QAbstractSlider::sliderChange().

[virtual protected] void QScrollBar::wheelEvent(QWheelEvent *event)

Переопределено из QWidget::wheelEvent().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qscrollbar.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API