Spec-Zone.ru › Qt 6.0

Тип QML ScrollBar

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

Заявление об импорте: import QtQuick.Controls 2.0
С момента: 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
    }
}

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

  • Разместите полосу прокрутки (с помощью свойства 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. Это свойство полезно для переключения между типичными пользовательскими интерфейсами с мышью и сенсорным управлением с интерактивными и неинтерактивными полосами прокрутки соответственно.

Это свойство было введено в 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 : перечисление

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

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

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

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

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

[с QtQuick.Controls 2.2 (Qt 5.9)] policy : перечисление

Это свойство содержит политику полосы прокрутки. По умолчанию политика — 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.

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

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

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

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

[с 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 { }
}

См. также Прикрепление ScrollBar к Flickable.

ScrollBar.vertical : ScrollBar

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

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

См. также Прикрепление 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.0/qml-qtquick-controls2-scrollbar.html

Spec-Zone.ru

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