旋钮 QML 类型
可选择的项的旋转“轮”,更多...
导入语句 | import QtQuick.Controls |
继承 |
属性
- count : int
- currentIndex : int
- currentItem : Item
- delegate : Component
- model : variant
- moving : bool
(since QtQuick.Controls 2.2 (Qt 5.9))
- visibleItemCount : int
- wrap : bool
(since QtQuick.Controls 2.1 (Qt 5.8))
附加属性
- displacement : real
- tumbler : Tumbler
方法
- void positionViewAtIndex(int index, PositionMode mode)
(since QtQuick.Controls 2.5 (Qt 5.12))
详细信息
Tumbler { model: 5 // ... }
旋钮允许用户从一个可旋转的“轮”中选择一个选项。当选项太多而不能使用例如单选按钮时,或者选项太少而需要使用可编辑的微调框时,它非常有用。它方便的是它不需要键盘和当项数很多时在两端回绕。
API 类似于如 ListView 和 PathView 这样的视图;可以设置一个 model 和 delegate,而 count 和 currentItem 属性提供了对视图信息的只读访问。要定位视图到某个索引,使用 positionViewAtIndex。
然而,与 PathView 和 ListView 这样的视图不同,始终有一个当前项(当模型不为空时)。这意味着当 count 等于 0
时,currentIndex 将为 -1
。在其他所有情况下,将大于或等于 0
。
默认情况下,Tumbler 在达到顶部和底部时会自动换行,前提是模型中的项目数量大于可视项目数量;也就是说,当 count 大于 visibleItemCount
import QtQuick import QtQuick.Window import QtQuick.Controls 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 |
此属性包含当前项目的索引。
当 count 等于 0
时,此属性的值是 -1
。在其他所有情况下,它将大于或等于 0
。
也请参阅 currentItem 和 positionViewAtIndex()。
currentItem : Item |
此属性包含当前索引处的项目。
也请参阅 currentIndex 和 positionViewAtIndex()。
delegate : Component |
此属性包含用于显示每个项目的代理。
model : variant |
此属性包含为该 Tumbler 提供数据的模型。
moving : bool |
此属性描述了 Tumbler 是否由于用户拖动或轻扫而导致当前正在移动。
此属性自 QtQuick.Controls 2.2 (Qt 5.9) 开始引入。
visibleItemCount : int |
此属性包含 Tumbler 中可见的项目数量。它必须是奇数,因为当前项目始终垂直居中。
wrap : bool |
此属性确定 Tumbler 在达到顶部或底部时是否换行。
当 count 小于 visibleItemCount 时,默认值为 false
,因为当项目较少时与未换行的 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 代理。如果项目不是 tumbler 代理,则值是 null
。
方法文档
|
将视图置于指定的位置,使得 index 位于 mode 指定的位置。
例如
positionViewAtIndex(10, Tumbler.Center)
如果 wrap 设置为 true(默认值),则 PathView 的 positionViewAtIndex() 函数可用的模式可用,否则 ListView 的 positionViewAtIndex() 函数可用的模式可用。
注意: 已知限制:当 wrap 设置为 true 时,使用 Tumbler.Beginning
将会导致在视图顶部的项位置错误。作为 workaround,请传递 index - 1
。
此方法自 QtQuick.Controls 2.5 (Qt 5.12) 起引入。
另请参阅 currentIndex。
© 2024 The Qt Company Ltd. 本文档中包含的文档贡献是各自所有者的版权。本提供的文档根据 Free Software Foundation 发布的 GNU Free Documentation License version 1.3 的条款许可。Qt 及其相应标志是 The Qt Company Ltd. 在芬兰以及全球其他国家的商标。所有其他商标均为各自所有者的财产。