Spec-Zone.ru › Qt 5.11

Класс 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
  • 34 открытых функций унаследовано от QObject
  • 14 открытых функций унаследовано от QPaintDevice

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

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 открытая переменная унаследована от QObject
  • 5 статических открытых членов унаследовано от QWidget
  • 10 статических открытых членов унаследовано от QObject
  • 1 защищённый слот унаследовано от QWidget
  • 2 защищённых переменных унаследовано от QObject
  • 1 защищённый тип унаследовано от QPaintDevice

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

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

Полоса прокрутки — это элемент управления, который позволяет пользователю получить доступ к частям документа, которые больше, чем сам виджет, используемый для его отображения. Он предоставляет визуальное представление текущего положения пользователя в документе и размера части документа, которая отображается. Полосы прокрутки обычно оснащены другими элементами управления, позволяющими более точно навигации. 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. Это даст нам полосу прокрутки с пятью "страницами".

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

Большинство стилей графического интерфейса используют значение 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/archives/qt-5.11/qscrollbar.html

Spec-Zone.ru

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