QML控件类型:Tumbler

2023-10-31

一、描述

Tumbler 用于通过旋转轮子来选择一个值。

Tumbler {
    model: 10
}

API 类似于 ListView PathView 等视图的 API。可以设置模型和委托,并且 count currentItem 属性提供对视图信息的只读访问。与 PathView ListView 之类的视图不同的是始终存在一个当前项(当模型不为空时)。即当 count 等于 0 时,currentIndex 将为 -1。在所有其他情况下,它将大于或等于 0。

import QtQuick
import QtQuick.Window
import QtQuick.Controls

Window
{
    id: window

    width: 800
    height: 600
    visible: true

    function formatText(count,modelData)
    {
        var data = (count === 12) ? modelData + 1 : modelData;
        return data.toString().length < 2 ? "0" + data : data;
    }

    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
            }
        }

        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
                }
            }
        }
    }
}

二、属性成员

1、【只读】count : int

模型中的项目数。

2、currentIndex : int

当前项目的索引。当 count 等于 0 时,此属性值为 -1。在其他情况下,它将大于或等于 0。

3、【只读】currentItem : Item

当前索引的项目。

4、delegate : Component

用于显示每个项目的委托。

5、model : variant

提供数据的模型。

6、moving : bool

由于用户拖动或轻弹,此属性描述了当前是否正在移动。

7、visibleItemCount : int

可见的项目数。它必须是奇数,因为当前项目始终垂直居中。

8、wrap : bool

当到达顶部或底部时,是否环绕。当 count 小于 visibleItemCount 时,默认值为 false。

三、附加属性成员

1、【只读】Tumbler.displacement : real

此附加属性保存从 -visibleItemCount / 2 到 visibleItemCount / 2 的值,表示该项目与当前项目的距离,0 表示是当前值。

项目在非 currentItem 时变为 40% 不透明,当成为 currentItem 时会过渡到 100% 不透明度:

delegate: Text {
    text: modelData
    opacity: 0.4 + Math.max(0, 1 - Math.abs(Tumbler.displacement)) * 0.6
}

2、【只读】Tumbler.tumbler : Tumbler

该属性可以附加到委托。如果项目不是 Tumbler 委托,则该值为 null。

四、函数成员

1、void positionViewAtIndex(int index, PositionMode mode)

定位视图,使索引位于 mode 指定的位置。

五、自定义 Tumbler 示例

import QtQuick 2.14
import QtQuick.Window 2.14
import QtQuick.Controls

Window {
    width: 640
    height: 480
    visible: true
    title: qsTr("Hello World")

    Tumbler {
        id: control
        model: 15

        background: Item {
            Rectangle {
                opacity: control.enabled ? 0.2 : 0.1
                border.color: "#000000"
                width: parent.width
                height: 1
                anchors.top: parent.top
            }

            Rectangle {
                opacity: control.enabled ? 0.2 : 0.1
                border.color: "#000000"
                width: parent.width
                height: 1
                anchors.bottom: parent.bottom
            }
        }

        delegate: Text {
            text: qsTr("Item %1").arg(modelData + 1)
            font: control.font
            horizontalAlignment: Text.AlignHCenter
            verticalAlignment: Text.AlignVCenter
            opacity: 1.0 - Math.abs(Tumbler.displacement) / (control.visibleItemCount / 2)

            required property var modelData
            required property int index
        }

        Rectangle {
            anchors.horizontalCenter: control.horizontalCenter
            y: control.height * 0.4
            width: 40
            height: 1
            color: "#21be2b"
        }

        Rectangle {
            anchors.horizontalCenter: control.horizontalCenter
            y: control.height * 0.6
            width: 40
            height: 1
            color: "#21be2b"
        }
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QML控件类型:Tumbler 的相关文章

  • 使用 QQuickImageProvider 的正确方法是什么?

    我需要动态选择 qpixmaps 以显示在 QML 图像项中 该 qpixmaps 应该从源 qpixmap 中裁剪出来 我将从 QML 文件中设置它 我希望它们能够根据 QML 的第一个需求被 C 代码裁剪并缓存以供将来使用 对于动态图像
  • 如何为动态创建的 QML 元素添加事件处理程序?

    我根据以下内容动态添加了一些 qml 组件到我的 gui 中这篇博文 http kunalmaemo blogspot kr 2011 04 creating qml element dynamically on html 如何为这些新创建
  • 在 QML 中获取 $HOME 和/或用户名

    我需要知道如何获取用户的用户名和 或主目录 我用 google 搜索了一段时间 但只能找到 C 或 BASH 的变量 如何获取用户名或主目录 我正在用 QML 写作 这就是我的实现方式 Qml环境变量 h ifndef QMLENVIRON
  • 没有安装 qmlviewer

    我已经安装了 Qt SDK 5 0 0 beta 2 和 Qt Creator 2 6 0 它检测到该包 但给出警告 未安装 qmlviewer 我找了一下 在SDK的bin文件夹下 我能做些什么 我使用 ubuntu 12 04 并将 S
  • Qt3D动态纹理

    我正在开发包含 Qt3D 视图的软件 这个 3D 视图使我们能够可视化元素 对象的所有渲染部分都是使用自定义材质 着色器在 QML 中完成的 我能够创建一种将纹理传递到着色器以进行纹理化的材质 保存纹理的QML对象是Texture2D 它的
  • 当 Repeater 的委托高度发生变化时调整 ColumnLayout

    我已经设置了一个名为测试1 qml包含以下内容 import QtQuick 2 6 import QtQuick Layouts 1 3 Rectangle width 800 height 1000 ColumnLayout ancho
  • 设置Loader项目属性

    In the context https stackoverflow com questions 33513546 delegate folderlistmodel in tableview文件管理器 我有一个TableView组件保存在文
  • Qml中的QScrollArea:Flickable + QQuickPaintedItem

    我正在尝试实现类似的东西QScrollArea 在小部件世界中 在 Qml 的帮助下 我决定一探究竟Flickable plus QQuickPaintedItem基于项目 在我的例子中名为抽屉 Flickable onContentXCh
  • Qt 5.4/Qml:防止绑定循环

    我有一个全局单例 设置 它保存应用程序设置 当我尝试运行以下代码时 我得到一个QML CheckBox Binding loop detected for property checked CheckBox checked Settings
  • 什么时候应该首选 Loader 而不是 createQmlObject,反之亦然 - QML?

    两者都可以动态创建对象 什么时候应该Loader优先于Qt createQmlObjectQML 中反之亦然吗 The Loader可以被视为特定对象的占位符 它还使您能够通过Loader s id Qt createQmlObject通常
  • 将项目添加到自定义组件的布局

    我有一个习惯Footer Component我想在 QML 应用程序的不同位置重用它 Rectangle color gold height 50 anchors bottom parent bottom left parent left
  • 我的 QSqlQueryModel 不在列表视图中显示数据

    我正在玩 QSqlQueryModel 但我现在完全陷入困境 我一整天都在寻找解决方案 但到目前为止还没有运气 我所做的工作是它从我的 sqlite 数据库中提取数据 但由于某种原因我无法在列表视图中显示它 我的角色名似乎不存在 对于我从数
  • 在 Qt Creator 中相互公开 QML 组件

    我正在使用 Qt Quick 和 PySide2 开发仪表板应用程序 但在 Qt Creator 的设计模式中公开我的 QML 组件时遇到问题 我的文件夹结构如下所示 myapp mycomponents component1 qml co
  • 内容居中的流式布局

    我有一排项目 当窗口宽度变得太小而无法显示一行中的所有项目时 这些项目应该堆叠起来 如下图所示 The Flow组件堆叠项目 但它们不是居中而是在左侧或右侧对齐 Flow Item Item Item Item Item QML 中是否有内
  • 在另一个中使用 QAbstractListModel

    我在尝试使用 Qt QML 为我的应用程序开发数据模型时遇到问题 我已经用过一个QAbstractListModel能够将海关数据模型从 C 传递到 QML 并且它对于简单模型 例如基于字符串和布尔的模型 来说就像一个魅力 但现在我需要建立
  • { Qt5.0.2/QML/QtQuick2.0/C++ } 运行没有错误的示例项目? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我的设置是Qt5 0 2 MinGW 32位 我在寻找 Qt5 0 2 QML QtQuick2 0 C 代码项目示例 不是Qt Qu
  • 打开和关闭附加窗口 (QML)

    目前我有一个通过以下方式打开的窗口 property variant win Button id testButton MouseArea onClicked var component Qt createComponent test qm
  • 在没有加载器的情况下实例化内联组件

    有没有办法实例化内联Component 即在同一文件中定义 而不使用Loader 我不太关心使用的性能影响Loader因为我要用很多东西污染我的文件Loader包装纸 我发现从 JavaScript 创建动态 QML 对象 http doc
  • 如何将自定义 Qt 类型与 QML 信号一起使用?

    我在 Qt 5 2 qml 应用程序中创建了一个自定义类型 class Setting public QObject Q OBJECT Q PROPERTY QString key READ key WRITE setKey Q PROPE
  • Qt QML 数据模型似乎不适用于 C++

    我一直在使用中的示例http doc qt digia com 4 7 qdeclarativemodels html http doc qt digia com 4 7 qdeclarativemodels html这是 QML 声明性数

随机推荐

  • R语言课程资料

    第一节 R语言简介 R语言简介 R 既是一种语言 R是一种解释性语言 也是一个软件由AT T贝尔实验室的S语言发展而来具有统计分析功能和强大的作图功能开源软件 目前在 R 网站上有 17500个程序包 涵盖了基础统计学 社会学 经济学 生态
  • 【ARM】在NUC977上搭建基于boa的嵌入式web服务器

    一 实验目的 搭建基于arm开发板的web服务端程序 通过网页控制开发板LED状态 二 boa简介 Boa服务器是一个小巧高效的web服务器 是一个运行于unix或linux下的 支持CGI的 适合于嵌入式系统的单任务的http服务器 源代
  • C# 调用SQL Server存储过程,传入参数,返回查询结果,更新dataGridView

    调用SQL Server存储过程 传入参数 返回查询结果 using SqlConnection conn new SqlConnection connectionString String cmdText Screen 存储过程名 Sql
  • Bible读经体会

    诸天述说 神的荣耀 穹苍传扬他的手段 诗篇19 1 花草树木在喊叫 耶和华造我的 数学从耶和华而来 自然界自然启示从耶和华而来 里面体现了耶和华的创意无限和思路周全 我们默默欣赏着观看着 今天阅读了创世纪的一点点体会 做下笔记 请勿用验证的
  • Shell--基础--01--介绍

    Shell 基础 01 介绍 1 Shell 环境 Shell 编程需要2个环境 文本编辑器 能解释执行的脚本解释器 2 Linux 的 Shell 常见种类 Bourne Shell usr bin sh或 bin sh Bourne A
  • python dataframe索引转成列_Pandas之DataFrame对象的列和索引之间的转化

    约定 import pandas as pd DataFrame对象的列和索引之间的转化 我们常常需要将DataFrame对象中的某列或某几列作为索引 或者将索引转化为对象的列 pandas提供了set index reset index
  • vue 项目中引用cdn上的静态js文件

    vue 项目中引用cdn上的静态js文件 需求 一份静态配置文件放在cdn中 文件暴露出数据列表和公共方法 读取文件的配置数据和公共方法 初始化Action列表 const cdnUrl https cdn xxx js libs vm a
  • Bat延时退出窗口

    timeout t 5
  • 【Error】ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29‘ not found

    参考文章 如何解决version GLIBCXX 3 4 29 not found的问题 1 问题 在 wsl ubuntu20 04 运行 yolov8 时 出现以下错误 ImportError lib x86 64 linux gnu
  • san.js源码解读之工具(util)篇——each函数

    一 迭代器模式 在开始解析源码之前 先来看一下 javascript 设计模式 迭代器模式 如果没有接触过该模式的小伙伴可能一脸疑惑 表示没听说过 但是这个迭代器模式 可能你已经用了很久了只是不知道它的名字罢了 比如 jquery中的 ea
  • 个位数统计 C语言

    1021 个位数统计 15 分 给定一个 k 位整数 N dk 1 10k 1 d1 101 d0 0 di 9 i 0 k 1 dk 1 gt 0 请编写程序统计每种不同的个位数字出现的次数 例如 给定 N 100311 则有 2 个 0
  • python萤火虫算法_萤火虫算法-python实现

    1 importnumpy as np2 from FAIndividual importFAIndividual3 importrandom4 importcopy5 importmatplotlib pyplot as plt6 7 8
  • FileNotFoundError: [Errno 2] No such file or directory: 'template/

    1 在运行generate list py时一直出现找不到templates header html和templates footer html的错误提示 2 后来才发现是路径问题 由于webapp是另外新建的目录 所以对yate py中w
  • Opencv使用cascade方法训练自己的LBP特征分类器的全过程

    前言 刚刚才把自己训练的分类器整出来 现在来理一下整个过程 从制作正负样本开始一直到最后产生自己的分类器 xml文件 因为毕设的要求 可能要用Opencv训练识别模型 用以识别道路积水 Opencv上自带的只有一些识别脸 眼睛等模型 所以要
  • 逻辑表达式三种化简方法

    逻辑表达式三种化简方法 目录 公式化简法 卡诺图化简法 机器化简法 一 公式法化简 是利用逻辑代数的基本公式 对函数进行消项 消因子 常用方法有 并项法 利用公式AB AB A 将两个与项合并为一个 消去其中的一个变量 吸收法 利用公式A
  • Unity WebGL Calls Rust Wasm

    Unity WebGL Calls Rust Wasm Jin Qing s Column May 2023 Reference https zenn dev ruccho articles 261136f7bdb003 In this a
  • 【通信原理】数字基带传输的线路码型

    数字基带传输的线路码型 简单介绍数字基带传输的线路码型的信号波形的特点 以及生成方法 注意观察频谱 文末附Matlab代码 以下包括双极性NRZ 单极型NRZ 双极型RZ 单极型RZ 差分码 曼切斯特码 数字双相码 密勒码 CMI码 AMI
  • STM32+二氧化碳传感器(FS00301)

    配置串口4 uart c u8 USART4 RX BUF USART REC LEN 接收缓冲 最大USART REC LEN个字节 u16 USART4 RX STA 0 接收状态标记 void uart4 init u32 bound
  • Istio Java SDK API - 资源访问-VirtualService/Gateway/DestinationRule/ServiceEntry

    环境 参考上一篇文章 Java如何连接Istio 参考上一篇文章 访问Isito资源 VirtualService Gateway DestinationRule ServiceEntry 项目源码 package com you micr
  • QML控件类型:Tumbler

    一 描述 Tumbler 用于通过旋转轮子来选择一个值 Tumbler model 10 API 类似于 ListView 和 PathView 等视图的 API 可以设置模型和委托 并且 count 和 currentItem 属性提供对