Spec-Zone.ru › Qt

Класс QScrollBar

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

Заголовок: #include <QScrollBar>
CMake: find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets)
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

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

virtual 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

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

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

Если вам нужно предоставить область прокрутки для другого виджета, удобнее использовать класс 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. Это даст нам полосу прокрутки с пятью "страницами".

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

[virtual 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-6.2/qscrollbar.html

Spec-Zone.ru

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