【QML-输入类】

Qt编程指南-VX:hao541022348

  • ■ 输入类
    • ■ Slider
    • ■ TextArea
    • ■ Dial
    • ■ ComboBox
    • ■ RangeSlider
    • ■ TextField
    • ■ Tumbler

■ 输入类

提供了基于 数字 和 文本 输入的各种输入控件

■ Slider

示例一

ColumnLayout{anchors.fill: parent;RowLayout{Label{text: "音量值:"}Label{id: musicLoudtext: "0"}Layout.alignment: Qt.AlignHCenter}Slider{from: 1value: 20to: 100stepSize:1Layout.alignment: Qt.AlignHCenteronMoved: {musicLoud.text = value/1;}}
}

在这里插入图片描述
示例二

  Slider {id: controlvalue: 0.5background: Rectangle {x: control.leftPaddingy: control.topPadding + control.availableHeight / 2 - height / 2implicitWidth: 200implicitHeight: 4width: control.availableWidthheight: implicitHeightradius: 2color: "#bdbebf"Rectangle {width: control.visualPosition * parent.widthheight: parent.heightcolor: "#21be2b"radius: 2}}handle: Rectangle {x: control.leftPadding + control.visualPosition * (control.availableWidth - width)y: control.topPadding + control.availableHeight / 2 - height / 2implicitWidth: 26implicitHeight: 26radius: 13color: control.pressed ? "#f0f0f0" : "#f6f6f6"border.color: "#bdbebf"}}

在这里插入图片描述

■ TextArea

TextArea是一个多行文本编辑器。
TextArea扩展了TextEdit,添加了一个占位文本功能,并添加了装饰。
注意这个文本编辑器是没有边框之类的,只有一个输入区域而已。

如果你想让一个文本区域可滚动

  ScrollView {id: viewanchors.fill: parentTextArea {text: "TextArea\n...\n...\n...\n...\n...\n...\n"}}

■ Dial

Dial 表盘类似于音响或工业设备上的传统表盘旋钮。它允许用户在一个范围内指定一个值。

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Layouts 1.3
import QtQuick.Controls 2.5
import QtQuick.Extras 1.4Window {id: windowvisible: truewidth: 640height: 480title: qsTr("Hello World")Dial{id: dialx: 233y: 167anchors.verticalCenter: parent.verticalCenteranchors.horizontalCenter: parent.horizontalCentermaximumValue: 100minimumValue: 0stepSize: 1}Label {id: labelx: 245y: 308text: qsTr("转盘值:")anchors.horizontalCenterOffset: -24anchors.horizontalCenter: parent.horizontalCenterhorizontalAlignment: Text.AlignHCenterLabel {id: label1x: 53y: 2width: 30height: 9text: dial.valuehorizontalAlignment: Text.AlignHCenter}        }
}

在这里插入图片描述

■ ComboBox

ComboBox是一个组合按钮和弹出列表。它提供了一种以占用最小屏幕空间的方式向用户显示选项列表的方法。
ComboBox用数据模型填充。数据模型通常是JavaScript数组、ListModel或整数,但也支持其他类型的数据模型。

  ComboBox {model: ["First", "Second", "Third"]}
**示例一:**
```c
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Layouts 1.3
import QtQuick.Controls 2.5Window {id: windowvisible: truewidth: 640height: 480title: qsTr("Hello World")ComboBox{id: comhboxy: 71anchors.horizontalCenterOffset: 0anchors.horizontalCenter: parent.horizontalCentermodel: ["Item1", "Item2", "Item3", "Item4"]onCurrentIndexChanged: {display.text = model[currentIndex];}}RowLayout {id: rowLayoutx: 264y: 134width: 100height: 62anchors.horizontalCenterOffset: 0anchors.horizontalCenter: parent.horizontalCenterLabel {id: label2text: qsTr("选择的值:")}Label {id: display}}
}

在这里插入图片描述
示例一:可编辑的组合框

  ComboBox {editable: truemodel: ListModel {id: modelListElement { text: "Banana" }ListElement { text: "Apple" }ListElement { text: "Coconut" }}onAccepted: {if (find(editText) === -1)model.append({text: editText})}}

在这里插入图片描述
**示例二 美化:

  import QtQuick 2.12import QtQuick.Controls 2.12ComboBox {id: controlmodel: ["First", "Second", "Third"]delegate: ItemDelegate {width: control.widthcontentItem: Text {text: modelDatacolor: "#21be2b"font: control.fontelide: Text.ElideRightverticalAlignment: Text.AlignVCenter}highlighted: control.highlightedIndex === index}indicator: Canvas {id: canvasx: control.width - width - control.rightPaddingy: control.topPadding + (control.availableHeight - height) / 2width: 12height: 8contextType: "2d"Connections {target: controlonPressedChanged: canvas.requestPaint()}onPaint: {context.reset();context.moveTo(0, 0);context.lineTo(width, 0);context.lineTo(width / 2, height);context.closePath();context.fillStyle = control.pressed ? "#17a81a" : "#21be2b";context.fill();}}contentItem: Text {leftPadding: 0rightPadding: control.indicator.width + control.spacingtext: control.displayTextfont: control.fontcolor: control.pressed ? "#17a81a" : "#21be2b"verticalAlignment: Text.AlignVCenterelide: Text.ElideRight}background: Rectangle {implicitWidth: 120implicitHeight: 40border.color: control.pressed ? "#17a81a" : "#21be2b"border.width: control.visualFocus ? 2 : 1radius: 2}popup: Popup {y: control.height - 1width: control.widthimplicitHeight: contentItem.implicitHeightpadding: 1contentItem: ListView {clip: trueimplicitHeight: contentHeightmodel: control.popup.visible ? control.delegateModel : nullcurrentIndex: control.highlightedIndexScrollIndicator.vertical: ScrollIndicator { }}background: Rectangle {border.color: "#21be2b"radius: 2}}}

在这里插入图片描述

■ RangeSlider

RangeSlider 通过沿着轨道滑动每个滑块来选择由两个值指定的范围。区域值嘛

示例一

        RowLayout{Label{text: "下限:"}Label{id:lowIndextext: "0"}Label{text: "  -  "}Label{text: "上限:"}Label{id:highIndextext: "0"}Layout.alignment: Qt.AlignHCenter}RangeSlider {transformOrigin: Item.Centerfrom: 1to: 100first.value: 0second.value: 100stepSize: 1Layout.alignment: Qt.AlignHCenterfirst.onMoved: {lowIndex.text = first.value.toString()}second.onMoved: {highIndex.text = second.value;}}

在这里插入图片描述
示例二

  RangeSlider {from: 1to: 100first.value: 25second.value: 75}

示例三
在这里插入图片描述

  import QtQuick 2.12import QtQuick.Controls 2.12RangeSlider {id: controlfirst.value: 0.25second.value: 0.75background: Rectangle {x: control.leftPaddingy: control.topPadding + control.availableHeight / 2 - height / 2implicitWidth: 200implicitHeight: 4width: control.availableWidthheight: implicitHeightradius: 2color: "#bdbebf"Rectangle {x: control.first.visualPosition * parent.widthwidth: control.second.visualPosition * parent.width - xheight: parent.heightcolor: "#21be2b"radius: 2}}first.handle: Rectangle {x: control.leftPadding + control.first.visualPosition * (control.availableWidth - width)y: control.topPadding + control.availableHeight / 2 - height / 2implicitWidth: 26implicitHeight: 26radius: 13color: control.first.pressed ? "#f0f0f0" : "#f6f6f6"border.color: "#bdbebf"}second.handle: Rectangle {x: control.leftPadding + control.second.visualPosition * (control.availableWidth - width)y: control.topPadding + control.availableHeight / 2 - height / 2implicitWidth: 26implicitHeight: 26radius: 13color: control.second.pressed ? "#f0f0f0" : "#f6f6f6"border.color: "#bdbebf"}}

■ TextField

TextField 其实就是是一个单行文本编辑器
TextField扩展了TextInput的功能,添加了占位文本功能,并添加了装饰的功能,这里的装饰主要就是只添加了边框和聚焦输入的时候的高亮,不像TextInput就只管输入,没有修饰的功能。
在这里插入图片描述

TextField {placeholderText: qsTr("占位符")}

在这里插入图片描述

  import QtQuick 2.12import QtQuick.Controls 2.12TextField {id: controlplaceholderText: qsTr("Enter description")background: Rectangle {implicitWidth: 200implicitHeight: 40color: control.enabled ? "transparent" : "#353637"border.color: control.enabled ? "#21be2b" : "transparent"}}

■ Tumbler

Tumbler 其实就是一个类似类似 手机上 的滚动选项卡的东西
Tumbler 添加很多的 TumblerColumn ,我们获取一些索引位置信息通过 TumblerColumn 的方式来获取每一个TumblerColumn的索引。
在这里插入图片描述

    Tumbler {id: tumblerx: 314width: 180height: 77anchors.top: dial.bottomanchors.topMargin: 60anchors.horizontalCenterOffset: 0anchors.horizontalCenter: parent.horizontalCenterTumblerColumn {id:column1model: 5onCurrentIndexChanged: {selectValue.text = column1.currentIndex.toString() + column2.model[column2.currentIndex] + column3.model[column3.currentIndex];}}TumblerColumn {id:column2model: [0, 1, 2, 3, 4]onCurrentIndexChanged: {selectValue.text = column1.currentIndex.toString() + column2.model[column2.currentIndex] + column3.model[column3.currentIndex];}}TumblerColumn {id:column3model: ["A", "B", "C", "D", "E"]onCurrentIndexChanged: {selectValue.text = column1.currentIndex.toString() + column2.model[column2.currentIndex] + column3.model[column3.currentIndex];}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/579682.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

K8S异常处理

一、概述 1、k8s有时候会报错The connection to the server ip:6443 was refused - did you specify the right host or port ,本文档提供几种可能产生该报错的原因和排障思路。 二、发现问题 使用任意Kubectl 命令会报错:The connection to the serv…

鸿蒙操作系统:从手机到物联网,打造全场景智能体验

随着科技的不断发展,人们对于操作系统的需求也在不断升级。鸿蒙操作系统,作为华为推出的新一代智能终端操作系统,凭借其强大的分布式能力、流畅的用户体验以及丰富的应用生态,正逐渐成为人们关注的焦点。 一、鸿蒙操作系统概述 …

Nacos2.1.2改造适配达梦数据库7.0

出于业务需求,现将Nacos改造适配达梦数据库7.0,记录本次改造过程。 文章目录 一、前期准备二、适配流程1、项目初始化2、引入驱动3、源码修改 三、启动测试四、打包测试 一、前期准备 Nacos源码,版本:2.1.2:源码下载…

python3遇到Can‘t connect to HTTPS URL because the SSL module is not available.

远程服务器centos7系统上有minicoda3,觉得太占空间,就把整个文件夹删了,原先的Python3也没了,都要重装。 我自己的步骤:进入管理员模式 1.下载Python3的源码: wget https://www.python.org/ftp/python/3.1…

电脑显卡驱动停止响应该怎么办?为什么会出现这种情况

显卡驱动停止响应的原因 当你电脑突然弹框说显卡驱动停止响应,你知道是出现什么问题了吗,下面我们为大家总结了有可能造成显卡驱动停止响应的原因。1. 过热:显卡在长时间高负载下可能会过热,导致驱动停止响应。过高的温度可能…

LSTM的记忆能力实验 [HBU]

目录 模型构建 LSTM层 模型训练 多组训练 模型评价 模型在不同长度的数据集上的准确率变化图 模型汇总 总结 长短期记忆网络(Long Short-Term Memory Network,LSTM)是一种可以有效缓解长程依赖问题的循环神经网络.LSTM 的…

uni-app tabbar组件

锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…

SEO网站分类完整指南

你知道吗,适当的网站分类结构对于良好的SEO很重要?在我们的最新指南中了解如何使用网站分类。 对于那些已经在SEO领域工作了一段时间的人来说,你可能听说过网站分类法,因为它指的是网站。 当您提到网站的结构以及用户浏览的难易…

Zookeeper在分布式命名服务中的实践

Java学习面试指南:https://javaxiaobear.cn 命名服务是为系统中的资源提供标识能力。ZooKeeper的命名服务主要是利用ZooKeeper节点的树形分层结构和子节点的顺序维护能力,来为分布式系统中的资源命名。 哪些应用场景需要用到分布式命名服务呢&#xff1…

Python in Visual Studio Code 2023年12月发布

作者:Courtney Webster 排版:Alan Wang 我们很高兴地宣布 Visual Studio Code 的 Python 和 Jupyter 扩展将于 2023 年 12 月发布! 此版本包括以下公告: 可配置的调试选项已添加到“运行”按钮菜单可以使用 Pylance 显示类型层次…

搭建自动化 Web 页面性能检测系统 —— 设计篇

​ 编辑 页面性能对于用户体验、用户留存有着重要影响,当页面加载时间过长时,往往会伴随着一部分用户的流失,也会带来一些用户差评。性能的优劣往往是同类产品中胜出的影响因素,也是一个网站口碑的重要评判标准。 一、名称解释 …

RM3100 stm32驱动(硬件i2c)

目录 RM3100接线HAL库I2C函数HAL_I2C_Mem_ReadHAL_I2C_Mem_WriteHAL_I2C_Master_Transmit / HAL_I2C_Master_Receive例子 HSHAKE寄存器 cubemx配置RM3100寄存器驱动最终效果 RM3100接线 原理图 SA0 SA1接地,此时i2c设备地址为0100000,即0x20 如果SA0接…

Android studio 花式按键

一、activity_main.xml代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.a…

Bug:Too many open files【ulimit限制】

Bug&#xff1a;Too many open files 今天在开发某个下载功能时&#xff0c;发现文件总是下载到250多个程序就挂掉&#xff0c;同时会打崩服务器&#xff0c;查看错误日志发现报&#xff1a;too many open files. 思路&#xff1a;根据错误信息可以知道打开的文件数过多&#x…

001、安装 Rust

目录 1. 安装 Rust 2. 安装编译器 Visual Studio Code 3. 更新、卸载、文档命令 4. 结语 1. 安装 Rust 安装 Rust 非常简单&#xff0c;首先进入 Rust官网 &#xff0c;然后点击右上角的 Install 。 进入 Install 界面&#xff0c; 它会自动识别你当前的操作系统并给你推荐…

用C求斐波那契数列-----(C每日一编程)

斐波那契数列: 斐波那契数列是指这样一个数列&#xff1a;1&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;5&#xff0c;8&#xff0c;13&#xff0c;21&#xff0c;34&#xff0c;55&#xff0c;89……这个数列从第3项开始 &#xff0c;每一项都等于前两项之和。 递推…

Kubernetes (四) 资源清单及yaml文件详解

一. 资源清单 二. 编写yaml文件及内容详解 常用命令 …

OSPF多区域配置-新版(12)

目录 整体拓扑 操作步骤 1.基本配置 1.1 配置R1的IP 1.2 配置R2的IP 1.3 配置R3的IP 1.4 配置R4的IP 1.5 配置R5的IP 1.6 配置R6的IP 1.7 配置PC-1的IP地址 1.8 配置PC-2的IP地址 1.9 配置PC-3的IP地址 1.10 配置PC-4的IP地址 1.11 检测R5与PC1连通性 1.12 检测…

人工智能_机器学习076_Kmeans聚类算法_体验_亚洲国家队自动划分类别---人工智能工作笔记0116

我们开始来看聚类算法 可以看到,聚类算法,其实就是发现事物之间的,潜在的关联,把 有关联的数据分为一类 我们先启动jupyter notebook,然后 我们看到这里我们需要两个测试文件 AsiaFootball.txt里面记录了,3年的,亚洲足球队的成绩

数据分析——数据预处理和数据管道构建

目标&#xff1a;对于拿到的一个任意数据集&#xff0c;编写类似数据加载程序&#xff0c;以适应深度学习的研究。 框架&#xff1a; 针对不同的时间序列数据集&#xff0c;可以总结如下关键步骤&#xff0c;以编写类似上述代码的深度学习数据处理流程&#xff1a; 1. **了解…