Spec-Zone.ru › Qt

Тип QML ScrollBar

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

Заявление об импорте: import QtQuick.Controls
С версии: Qt 5.7
Наследует:

Control

  • Список всех членов, включая унаследованные

Свойства

  • active : bool
  • horizontal : bool
  • interactive : bool
  • minimumSize : real
  • orientation : перечисление
  • policy : перечисление
  • position : real
  • pressed : bool
  • size : real
  • snapMode : перечисление
  • stepSize : real
  • vertical : bool
  • visualPosition : real
  • visualSize : real

Присоединенные свойства

  • horizontal : ScrollBar
  • vertical : ScrollBar

Методы

  • void decrease()
  • void increase()

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

ScrollBar — это интерактивная полоса, которую можно использовать для прокрутки до определенной позиции. Полоса прокрутки может быть либо вертикальной, либо горизонтальной и может быть прикреплена к любому Flickable, такому как ListView и GridView.

Flickable {
    // ...
    ScrollBar.vertical: ScrollBar { }
}

Прикрепление ScrollBar к Flickable

Когда ScrollBar прикреплен вертикально или горизонтально к Flickable, его геометрия и следующие свойства автоматически устанавливаются и обновляются по мере необходимости:

  • orientation
  • position
  • size
  • active

Прикрепленный ScrollBar переродится в целевой Flickable. Вертикально прикрепленный ScrollBar переразмеряется до высоты Flickable и позиционируется по обе стороны от него в зависимости от направления макета. Горизонтально прикрепленный ScrollBar переразмеряется до ширины Flickable и позиционируется внизу. Автоматическое управление геометрией можно отключить, указав другому родителю прикрепленный ScrollBar. Это может быть полезно, например, если ScrollBar должен быть размещён вне обрезного Flickable. Это демонстрируется в следующем примере:

Flickable {
    id: flickable
    clip: true
    // ...
    ScrollBar.vertical: ScrollBar {
        parent: flickable.parent
        anchors.top: flickable.top
        anchors.left: flickable.right
        anchors.bottom: flickable.bottom
    }
}

Обратите внимание, что ScrollBar не фильтрует события нажатия клавиш Flickable, к которому он прикреплён. Следующий пример иллюстрирует, как реализовать прокрутку с помощью клавиш вверх и вниз:

Flickable {
    focus: true

    Keys.onUpPressed: scrollBar.decrease()
    Keys.onDownPressed: scrollBar.increase()

    ScrollBar.vertical: ScrollBar { id: scrollBar }
}

Связывание состояния активности горизонтальных и вертикальных полос прокрутки

Горизонтальная и вертикальная полосы прокрутки по умолчанию не разделяют состояние active друг с другом. Для сохранения видимости обеих полос во время прокрутки в любом направлении установите двустороннюю привязку между состояниями active, как показано в следующем примере:

Flickable {
    anchors.fill: parent

    contentWidth: parent.width * 2
    contentHeight: parent.height * 2

    ScrollBar.horizontal: ScrollBar { id: hbar; active: vbar.active }
    ScrollBar.vertical: ScrollBar { id: vbar; active: hbar.active }
}

Неприкреплённые полосы прокрутки

Можно создать экземпляр ScrollBar без использования API прикреплённых свойств. Это полезно, когда поведение прикреплённой полосы прокрутки недостаточно или Flickable не используется. В следующем примере горизонтальные и вертикальные полосы прокрутки используются для прокрутки текста без использования Flickable:

Rectangle {
    id: frame
    clip: true
    width: 160
    height: 160
    border.color: "black"
    anchors.centerIn: parent

    Text {
        id: content
        text: "ABC"
        font.pixelSize: 160
        x: -hbar.position * width
        y: -vbar.position * height
    }

    ScrollBar {
        id: vbar
        hoverEnabled: true
        active: hovered || pressed
        orientation: Qt.Vertical
        size: frame.height / content.height
        anchors.top: parent.top
        anchors.right: parent.right
        anchors.bottom: parent.bottom
    }

    ScrollBar {
        id: hbar
        hoverEnabled: true
        active: hovered || pressed
        orientation: Qt.Horizontal
        size: frame.width / content.width
        anchors.left: parent.left
        anchors.right: parent.right
        anchors.bottom: parent.bottom
    }
}

При использовании неприкреплённой полосы прокрутки необходимо выполнить следующие действия вручную:

  • Разместите полосу прокрутки (с помощью свойства x и y или anchors, например).
  • Установите свойства size и position для определения размера и положения полосы прокрутки относительно прокручиваемого элемента.
  • Установите свойство active для определения того, когда полоса прокрутки будет отображаться.

См. также ScrollIndicator, Настройка ScrollBar и Индикаторные элементы управления.

Документация по свойствам

active : bool

Это свойство определяет, активна ли полоса прокрутки, т.е. когда она нажата или прикреплённый Flickable находится в движении.

Можно сохранить видимость горизонтальной и вертикальной полос во время прокрутки в любом направлении.

Это свойство автоматически устанавливается, когда полоса прокрутки прикреплена к flickable.

[только для чтения, с QtQuick.Controls 2.3 (Qt 5.10)] horizontal : bool

Это свойство указывает, является ли полоса прокрутки горизонтальной.

Это свойство было введено в QtQuick.Controls 2.3 (Qt 5.10).

См. также orientation.

[с QtQuick.Controls 2.2 (Qt 5.9)] interactive : bool

Это свойство указывает, является ли полоса прокрутки интерактивной. Значение по умолчанию равно true.

Неинтерактивная полоса прокрутки визуально и по поведению похожа на ScrollIndicator. Это свойство полезно для переключения между типичными UI на основе мыши и сенсорного управления с интерактивными и неинтерактивными полосами прокрутки соответственно.

Это свойство было введено в QtQuick.Controls 2.2 (Qt 5.9).

[с QtQuick.Controls 2.4 (Qt 5.11)] minimumSize : real

Это свойство содержит минимальный размер полосы прокрутки, масштабируемый до 0.0 - 1.0.

Это свойство было введено в QtQuick.Controls 2.4 (Qt 5.11).

См. также size, visualSize и visualPosition.

orientation : enumeration

Это свойство задаёт ориентацию полосы прокрутки.

Возможные значения:

Постоянная Описание
Qt.Horizontal Горизонтально
Qt.Vertical Вертикально (по умолчанию)

Это свойство автоматически устанавливается, когда полоса прокрутки прикреплена к flickable.

См. также horizontal и vertical.

[с QtQuick.Controls 2.2 (Qt 5.9)] policy : enumeration

Это свойство задаёт политику полосы прокрутки. Политика по умолчанию — ScrollBar.AsNeeded.

Возможные значения:

Постоянная Описание
ScrollBar.AsNeeded Полоса прокрутки отображается только тогда, когда содержимое слишком велико, чтобы уместиться.
ScrollBar.AlwaysOff Полоса прокрутки никогда не отображается.
ScrollBar.AlwaysOn Полоса прокрутки всегда отображается.

Следующий пример отображает вертикальную полосу прокрутки всегда:

Flickable {
    contentHeight: 2000
    ScrollBar.vertical: ScrollBar {
        policy: ScrollBar.AlwaysOn
    }
}

Это свойство было введено в QtQuick.Controls 2.2 (Qt 5.9).

position : real

Это свойство содержит положение полосы прокрутки, масштабированное до 0.0 - 1.0.

Это свойство автоматически устанавливается, когда полоса прокрутки прикреплена к Flickable.

См. также Flickable::visibleArea и visualPosition.

pressed : bool

Это свойство содержит значение, указывающее, нажата ли полоса прокрутки.

size : real

Это свойство содержит размер полосы прокрутки, масштабированный до 0.0 - 1.0.

Это свойство автоматически устанавливается, когда полоса прокрутки прикреплена к Flickable.

См. также Flickable::visibleArea, minimumSize и visualSize.

[since QtQuick.Controls 2.2 (Qt 5.9)] snapMode : enumeration

Это свойство содержит режим привязки.

Возможные значения:

Постоянная Описание
ScrollBar.NoSnap Полоса прокрутки не привязывается (по умолчанию).
ScrollBar.SnapAlways Полоса прокрутки привязывается во время перетаскивания.
ScrollBar.SnapOnRelease Полоса прокрутки не привязывается во время перетаскивания, но только после отпускания.

В следующей таблице различные режимы проиллюстрированы с помощью анимаций. Движение и stepSize (0.25) идентичны в каждой анимации.

Значение Пример
ScrollBar.NoSnap
ScrollBar.SnapAlways
ScrollBar.SnapOnRelease

Это свойство было добавлено в QtQuick.Controls 2.2 (Qt 5.9).

См. также stepSize.

stepSize : real

Это свойство содержит размер шага. Значение по умолчанию равно 0.0.

См. также snapMode, increase() и decrease().

[только для чтения, начиная с QtQuick.Controls 2.3 (Qt 5.10)] vertical : bool

Это свойство содержит значение, указывающее, является ли полоса прокрутки вертикальной.

Это свойство было добавлено в QtQuick.Controls 2.3 (Qt 5.10).

См. также orientation.

[since QtQuick.Controls 2.4 (Qt 5.11)] visualPosition : real

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

Это свойство было добавлено в QtQuick.Controls 2.4 (Qt 5.11).

См. также position и minimumSize.

[since QtQuick.Controls 2.4 (Qt 5.11)] visualSize : real

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

Это свойство было добавлено в QtQuick.Controls 2.4 (Qt 5.11).

См. также size и minimumSize.

Документация по присоединенному свойству

ScrollBar.horizontal : ScrollBar

Это свойство прикрепляет горизонтальную полосу прокрутки к Flickable.

Flickable {
    contentWidth: 2000
    ScrollBar.horizontal: ScrollBar { }
}

См. также Прикрепление полосы прокрутки к Flickable.

ScrollBar.vertical : ScrollBar

Это свойство прикрепляет вертикальную полосу прокрутки к Flickable.

Flickable {
    contentHeight: 2000
    ScrollBar.vertical: ScrollBar { }
}

См. также Прикрепление полосы прокрутки к Flickable.

Документация по методам

void decrease()

Уменьшает положение на stepSize или 0.1 если stepSize равно 0.0.

См. также stepSize.

void increase()

Увеличивает положение на stepSize или 0.1 если stepSize равно 0.0.

См. также stepSize.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qml-qtquick-controls2-scrollbar.html

Spec-Zone.ru

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