Spec-Zone.ru › Qt 5.14

Тип QML ScrollBar

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

Выражение импорта: import QtQuick.Controls 2.14
С версии: 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 друг с другом. Чтобы обе полосы оставались видимыми во время прокрутки в любом направлении, установите двустороннюю привязку к активным состояниям, как показано в следующем примере:

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 или свойств якорей, например).
  • Установите свойства size и position, чтобы определить размер и положение полосы прокрутки относительно прокручиваемого элемента.
  • Установите свойство active, чтобы определить, когда полоса прокрутки будет отображаться.

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

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

active : bool

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

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

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

[только для чтения] horizontal : bool

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

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

См. также orientation.

interactive : bool

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

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

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

minimumSize : real

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

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

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

orientation : перечисление

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

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

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

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

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

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.

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().

[только для чтения] vertical : bool

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

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

См. также orientation.

visualPosition : real

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

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

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

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-5.14/qml-qtquick-controls2-scrollbar.html

Spec-Zone.ru

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