Tumbler QML Type
可选择项目的可旋转轮盘。更多
Import Statement: | import QtQuick.Controls |
Inherits: |
属性
- count : int
- currentIndex : int
- currentItem : Item
- delegate : Component
- flickDeceleration : int
- 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 // ... }
Tumbler 允许用户从可旋转的项目"轮盘 "中选择一个选项。当选项过多无法使用RadioButton ,而选项过少需要使用可编辑的SpinBox 时,它就非常有用。它的方便之处在于不需要使用键盘,而且在有大量项目时,可以在两端缠绕。
其 API 与ListView 和PathView 等视图类似;可以设置model 和delegate 属性,而count 和currentItem 属性提供了对视图信息的只读访问。要将视图定位在某个索引处,请使用positionViewAtIndex() 。
然而,与PathView 和ListView 等视图不同,视图始终有一个当前项(当模型不是空的时)。这意味着当count 等于0
时,currentIndex 将是-1
。在所有其他情况下,它将大于或等于0
。
默认情况下,只要模型中的条目多于可见条目,Tumbler 就会在到达顶部和底部时wraps ;也就是说,当count 大于visibleItemCount 时:
import QtQuick import QtQuick.Window import QtQuick.Controls Rectangle { width: frame.implicitWidth + 10 height: frame.implicitHeight + 10 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 function formatText(count, modelData) { var data = count === 12 ? modelData + 1 : modelData; return data.toString().length < 2 ? "0" + data : data; } } } 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 } } } }
属性文档
count : int |
此属性表示模型中的项目数。
currentIndex : int |
currentItem : Item |
该属性保存当前索引中的项目。
另请参阅 currentIndex 和positionViewAtIndex()。
delegate : Component |
该属性保存用于显示每个项目的委托。
flickDeceleration : int |
该属性用于保存弹动减速的速度:数字越大,当用户停止触摸时,速度越快。例如,0.0001
几乎 "无摩擦",而10000
感觉相当 "粘"。
当wrap 为真时(默认值),默认的 flickDeceleration 为100
。否则,将取决于平台。要覆盖此行为,请明确设置此属性的值。要返回默认行为,请将此属性设置为未定义。不允许使用 0 或更小的值。
model : variant |
该属性包含为该滚揉机提供数据的模型。
moving : bool |
该属性描述了不倒翁当前是否正在移动,这是因为用户拖动或弹动了不倒翁。
该属性在 QtQuick.Controls 2.2 (Qt 5.9) 中引入。
visibleItemCount : int |
该属性表示滚揉器中可见的项目数。它必须是奇数,因为当前项目总是垂直居中。
wrap : bool |
该属性决定滚动条到达顶部或底部时是否缠绕。
当count 小于visibleItemCount 时,默认值为false
,因为在只有几个项目时,与不缠绕的不倒翁交互更简单。要覆盖此行为,请明确设置此属性的值。要返回默认行为,请将此属性设置为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 |
该附加属性用于保存不倒翁。该属性可附加到不倒翁委托。如果该项目不是不倒翁委托,则值为null
。
方法文档
|
定位视图,使index 位于mode 指定的位置。
例如
positionViewAtIndex(10, Tumbler.Center)
如果wrap 为 true(默认值),则可使用PathView 的positionViewAtIndex() 函数提供的模式,否则可使用ListView 的positionViewAtIndex() 函数提供的模式。
注意: 有一个已知的限制,即当wrap 为true
时使用Tumbler.Beginning
会导致错误的项目被放置在视图顶部。作为一种变通方法,可通过index - 1
。
此方法在 QtQuick.Controls 2.5 (Qt 5.12) 中引入。
另请参阅 currentIndex 。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.