Spec-Zone.ru › Qt 5.14

Класс QScrollBar

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

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

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

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

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

virtual bool event(QEvent *event) override
virtual QSize sizeHint() const override

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

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

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

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

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

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

Каждая полоса прокрутки имеет значение, указывающее, насколько ползунок удален от начала полосы прокрутки; это значение получается с помощью value() и устанавливается с помощью setValue(). Это значение всегда находится в пределах диапазона значений, определенного для полосы прокрутки, от minimum() до maximum() включительно. Диапазон допустимых значений можно установить с помощью setMinimum() и setMaximum(). При минимальном значении верхний край ползунка (для вертикальной полосы прокрутки) или левый край (для горизонтальной полосы прокрутки) будет находиться в верхней (или левой) части полосы прокрутки. При максимальном значении нижний (или правый) край ползунка будет находиться в нижней (или правой) части полосы прокрутки.

Длина ползунка обычно связана со значением шага страницы и обычно представляет собой пропорцию области документа, отображаемой в области прокрутки. Шаг страницы — это количество, на которое значение изменяется при нажатии пользователем клавиш Page Up и Page Down, и устанавливается с помощью setPageStep(). Меньшие изменения значения, определяемые шагом строки, производятся с помощью клавиш управления курсором, и это значение устанавливается с помощью setSingleStep().

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

Диапазон значений, заданный для полосы прокрутки, часто определяется по-другому, чем для QSlider, потому что необходимо учитывать длину ползунка. Если у нас есть документ с 100 строками, и мы можем отобразить только 20 строк в виджете, мы можем захотеть создать полосу прокрутки со значением шага страницы 20, минимальным значением 0 и максимальным значением 80. Это даст нам полосу прокрутки с пятью "страницами".

Отношение длины документа, диапазона значений, используемых в полосе прокрутки, и шага страницы простое во многих распространённых ситуациях. Диапазон значений полосы прокрутки определяется вычитанием выбранного шага страницы из некоторого значения, представляющего длину документа. В таких случаях полезно следующее уравнение: длина документа = максимум() - минимум() + 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(Qt::Orientation orientation, QWidget *parent = nullptr)

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

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

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

QScrollBar::QScrollBar(QWidget *parent = nullptr)

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

Аргумент 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(QContextMenuEvent *event).

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

Переопределяет: QAbstractSlider::event(QEvent *e).

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

Переопределяет: QWidget::hideEvent(QHideEvent *event).

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

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

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

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

Переопределяет: QWidget::mouseMoveEvent(QMouseEvent *event).

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

Переопределяет: QWidget::mousePressEvent(QMouseEvent *event).

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

Переопределяет: QWidget::mouseReleaseEvent(QMouseEvent *event).

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

Переопределяет: QWidget::paintEvent(QPaintEvent *event).

[override virtual] QSize QScrollBar::sizeHint() const

Переопределяет функцию доступа к свойству: QWidget::sizeHint.

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

Переопределяет: QAbstractSlider::sliderChange(QAbstractSlider::SliderChange change).

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

Переопределяет: QAbstractSlider::wheelEvent(QWheelEvent *e).

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

Spec-Zone.ru

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