当前位置: 首页 > news >正文

QML旋转选择器组件Tumbler

1. 介绍

Tumbler是一个用于创建旋转选择器的组件。它提供了一种直观的方式来让用户从一组选项中进行选择,类似于转盘式数字密码锁。网上找的类似网图如下:
在QML里,这种组件一共有两个版本,分别在QtQuick.Extras 1.4(旧)和QtQuick.Controls 2.15(新)里。

2.QtQuick.Extras 1.4版本

Tumbler控件需要与一个或多个TumblerColumn项一起使用,它们定义了每个列的内容。
TumblerColumn的model属性保存本列的数据模型。
在这里插入图片描述
也可以使用带有角色的模型:

ListModel {id: listModelListElement {foo: "A1"bar: "B1"baz: "C1"}ListElement {foo: "A2"bar: "B2"baz: "C2"}ListElement {foo: "A3"bar: "B3"baz: "C3"}}Tumbler {anchors.centerIn: parentTumblerColumn {model: listModelrole: "foo"}TumblerColumn {model: listModelrole: "bar"}TumblerColumn {model: listModelrole: "baz"}}

在这里插入图片描述
我们还可以自定义它的样式,定义整个Tumbler外观可以使用TumblerStyle,定义单列外观的就使用TumblerColumn的delegate和highlight属性。这版有很多bug,就不演示了。

3.QtQuick.Controls 2.15版本

Component {id: cusDelgateText {text: modelDataopacity: 0.8horizontalAlignment: Text.AlignHCenterverticalAlignment: Text.AlignVCenterfont.pixelSize: 16}}Row {id: row_layanchors.fill: parentTumbler {id: hoursTumblermodel: 12delegate: cusDelgatevisibleItemCount: 3     // 可见项数wrap: false             // 是否环绕(循环展示内容)}Tumbler {id: minutesTumblermodel: 60delegate: cusDelgate}Tumbler {id: amPmTumblermodel: ["AM", "PM"]delegate: cusDelgate}}

结果展示:
在这里插入图片描述
自定义Tumbler:

Tumbler {id: controlmodel: 15background: Item {Rectangle {opacity: control.enabled ? 0.2 : 0.1border.color: "#000000"width: parent.widthheight: 1anchors.top: parent.top}Rectangle {opacity: control.enabled ? 0.2 : 0.1border.color: "#000000"width: parent.widthheight: 1anchors.bottom: parent.bottom}}delegate: Text {text: qsTr("Item %1").arg(modelData + 1)font: control.fonthorizontalAlignment: Text.AlignHCenterverticalAlignment: Text.AlignVCenteropacity: 1.0 - Math.abs(Tumbler.displacement) / (control.visibleItemCount / 2)}Rectangle {anchors.horizontalCenter: control.horizontalCentery: control.height * 0.4width: 40height: 1color: "#21be2b"}Rectangle {anchors.horizontalCenter: control.horizontalCentery: control.height * 0.6width: 40height: 1color: "#21be2b"}}

结果展示:
在这里插入图片描述

http://www.lryc.cn/news/474791.html

相关文章:

  • 在工作中常用到的 Linux 命令总结
  • 反射、枚举和lambda表达式
  • Stable Diffusion Web UI 1.9.4常用插件扩展-WD14-tagger
  • java 第19天 Lambda、jdk8.0新方法、Optional
  • 江协科技STM32学习- P31 I2C通信协议
  • 6、liunx目录的功能
  • 挑战Java面试题复习第5天,无人扶我青云志
  • 大规模语言模型:从理论到实践(1)
  • C#如何锁定和解除鼠标及键盘BlockInput
  • Stable Diffusion 3.5发布:图像生成新纪元,多模态AI的突破!
  • MySQL超大分页怎么优化处理?limit 1000000,10 和 limit 10区别?覆盖索引、面试题
  • RabbitMQ 实现消息队列负载均衡
  • 嵌入式linux中HTTP协议原理基本分析
  • thinkphp和vue基于Workerman搭建Websocket服务实现用户实时聊天,完整前后端源码demo及数据表sql
  • 浅谈射频应用
  • SAP(PP生产制造)拆解工单业务处理
  • 《Python游戏编程入门》注-第4章2
  • deque
  • YOLOv11改进策略【卷积层】| CVPR-2020 Strip Pooling 空间池化模块 处理不规则形状的对象 含二次创新
  • yt-dlp下载视频
  • oracle insert忽略主键冲突,忽略重复记录
  • 小新学习k8s第四天之发布管理
  • 01_IAR新建CC2530工程
  • 原生鸿蒙的竞争力到底如何?
  • 数字化生态平台:关键功能全解析
  • c 到 c++ 过渡
  • [linux驱动开发--环境搭建] qemu-9.1+linux-kernel-6.11
  • 019集——获取CAD图中多个实体的包围盒(CAD—C#二次开发入门)
  • 【Clickhouse 探秘】Clikchouse 有哪些表引擎?你都知道哪些?
  • 你好,C++并发世界