Spec-Zone.ru › Qt 5.13

Тип QML ScrollBar

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

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

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

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

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

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

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

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.

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

Spec-Zone.ru

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