Тип QML Tumbler
Поворотное колесо элементов, которое можно выбрать. Подробнее...
| Оператор импорта: | import QtQuick.Controls 2.15 |
| С момента: | Qt 5.7 |
| Наследует: |
Свойства
- count : int
- currentIndex : int
- currentItem : Элемент
- delegate : Компонент
- model : variant
- moving : bool
- visibleItemCount : int
- wrap : bool
Прикрепленные свойства
- displacement : real
- tumbler : Tumbler
Методы
- void positionViewAtIndex(int index, PositionMode mode)
Подробное описание
Tumbler {
model: 5
// ...
} Tumbler позволяет пользователю выбрать вариант из вращающегося "колеса" элементов. Он полезен в тех случаях, когда существует слишком много вариантов для использования, например, RadioButton, и слишком мало вариантов, чтобы потребовалось использовать редактируемый SpinBox. Он удобен тем, что не требует использования клавиатуры и переходит на другую сторону при достижении одного из концов, когда имеется большое количество элементов.
API похож на API представлений, таких как ListView и PathView; можно задать model и delegate, а свойства count и currentItem предоставляют доступ для чтения к информации о представлении. Для позиционирования представления в определённом индексе используйте positionViewAtIndex().
Однако, в отличие от представлений, таких как PathView и ListView, всегда есть текущий элемент (когда модель не пуста). Это означает, что когда count равен 0, currentIndex будет -1. Во всех остальных случаях он будет больше или равен 0.
По умолчанию Tumbler переворачивается, когда достигает верхнего и нижнего крайних значений, если в модели элементов больше, чем видимых элементов; то есть, когда count больше, чем visibleItemCount:
import QtQuick 2.12
import QtQuick.Window 2.2
import QtQuick.Controls 2.12
Rectangle {
width: frame.implicitWidth + 10
height: frame.implicitHeight + 10
function formatText(count, modelData) {
var data = count === 12 ? modelData + 1 : modelData;
return data.toString().length < 2 ? "0" + data : data;
}
FontMetrics {
id: fontMetrics
}
Component {
id: delegateComponent
Label {
text: formatText(Tumbler.tumbler.count, modelData)
opacity: 1.0 - Math.abs(Tumbler.displacement) / (Tumbler.tumbler.visibleItemCount / 2)
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
font.pixelSize: fontMetrics.font.pixelSize * 1.25
}
}
Frame {
id: frame
padding: 0
anchors.centerIn: parent
Row {
id: row
Tumbler {
id: hoursTumbler
model: 12
delegate: delegateComponent
}
Tumbler {
id: minutesTumbler
model: 60
delegate: delegateComponent
}
Tumbler {
id: amPmTumbler
model: ["AM", "PM"]
delegate: delegateComponent
}
}
}
} См. также Настройка Tumbler и Контролы ввода.
Документация по свойствам
[только для чтения] count : int
Это свойство содержит количество элементов в модели.
currentIndex : int
Это свойство содержит индекс текущего элемента.
Значение этого свойства равно -1 когда count равен 0. Во всех остальных случаях оно будет больше или равно 0.
См. также currentItem и positionViewAtIndex().
[только для чтения] currentItem : Элемент
Это свойство содержит элемент по текущему индексу.
См. также currentIndex и positionViewAtIndex().
delegate : Компонент
Это свойство содержит делегат, используемый для отображения каждого элемента.
model : variant
Это свойство содержит модель, которая предоставляет данные для этого tumbler.
moving : bool
Это свойство описывает, перемещается ли tumbler в настоящее время, из-за того, что пользователь либо перетаскивает его, либо щелкает по нему.
Это свойство было введено в QtQuick.Controls 2.2 (Qt 5.9).
visibleItemCount : int
Это свойство содержит количество видимых элементов в tumbler. Оно должно быть нечётным числом, так как текущий элемент всегда находится по вертикали посередине.
wrap : bool
Это свойство определяет, переходит ли tumbler на другую сторону при достижении верхней или нижней границы.
Значение по умолчанию равно false когда count меньше visibleItemCount, так как взаимодействовать с непереворачивающимся Tumbler при небольшом количестве элементов проще. Чтобы переопределить это поведение, явно задайте значение этого свойства. Чтобы вернуться к поведению по умолчанию, установите это свойство в undefined.
Это свойство было введено в QtQuick.Controls 2.1 (Qt 5.8).
Документация по прикреплённым свойствам
[только для чтения] Tumbler.displacement : real
Это прикрепленное свойство содержит значение от -visibleItemCount / 2 до visibleItemCount / 2, которое представляет, насколько далеко этот элемент находится от текущего элемента, причём 0 соответствует полностью текущему элементу.
Например, элемент будет иметь 40% непрозрачности, когда он не является текущим элементом, и перейдёт к 100% непрозрачности, когда станет текущим элементом:
delegate: Text {
text: modelData
opacity: 0.4 + Math.max(0, 1 - Math.abs(Tumbler.displacement)) * 0.6
} [только для чтения] Tumbler.tumbler : Tumbler
Это прикреплённое свойство содержит tumbler. Свойство может быть прикреплено к делегату tumbler. Значение равно null если элемент не является делегатом tumbler.
Документация по методам
void positionViewAtIndex(int index, PositionMode mode)
Позиционирует представление так, что index находится в позиции, заданной mode.
Например:
positionViewAtIndex(10, Tumbler.Center)
Если wrap имеет значение true (по умолчанию), доступны режимы функции PathView's positionViewAtIndex(), в противном случае доступны режимы функции ListView's positionViewAtIndex().
Примечание: Существует известное ограничение, что использование Tumbler.Beginning при wrap равном true приведёт к позиционированию неверного элемента в верхней части представления. В качестве обходного решения передайте index - 1.
Этот метод был введён в QtQuick.Controls 2.5 (Qt 5.12).
См. также currentIndex.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qml-qtquick-controls2-tumbler.html