Qt6 Qt Quick UI原型学习QML第五篇

文章目录

  • 效果
  • QML语法父文件 MyQML.qml
  • QML语法子文件 TLineEditV1.qml
  • QML语法子文件 TTextEdit.qml


效果

在这里插入图片描述
在这里插入图片描述

QML语法父文件 MyQML.qml

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12Window {id: windowvisible: truewidth: 600height: 600title: qsTr("QML study")Rectangle {id:rectwidth:300height: 300color: "gray"// TextInput允许用户输入一行文本。元素支持输入约束,例如validator, inputMask,以及echoMode.TextInput {id: input1x: 8; y: 8width: 96; height: 20text: "Text Input 1"color: "red"}TextInput {id: input2x: 8; y: 36width: 96; height: 20text: "Text Input 2"color: "red"// focus: true   // 光标闪动}// 用户可以在一个TextInput来改变焦点。为了支持通过键盘切换焦点,我们可以使用KeyNavigation// 3和4可以通过键盘tab键来回切换TextInput {id: input3x: 8; y: 66width: 96; height: 20text: "Text Input 3"color: "blue"KeyNavigation.tab: input4}TextInput {id: input4x: 8; y: 86width: 96; height: 20text: "Text Input 4"color: "blue"KeyNavigation.tab:input3}// 尝试使用tab键进行导航。你将体验到焦点并没有改变// 为了防止这种情况,QML提供了FocusScopeRectangle {color: "blue"width:300height: 120anchors.bottom: rect.bottomTLineEditV1  {id:put1anchors.verticalCenter:  parent.verticalCenterwidth: parent.width - 10border.color: "#ff0000"}TLineEditV1  {id:put2anchors.verticalCenter:  parent.verticalCenteranchors.verticalCenterOffset: +40width: parent.width - 10border.color: "#ff0000"}}}// 文本编辑Rectangle {id:rect1width: 136height: 120color: "blue"x:rect.width + rect.xTTextEdit {id:inputx:8; y:8width: rect1; height: 104focus: truetext: "Text Edit"}}// 第三部分 Keys元素 屏蔽以上生效 焦点没有定位到当前元素// 文本编辑Rectangle {id:rect3width: 300height: 300color: "black"y:rect.height + rect.y + 10Rectangle {id:spuarex:8; y:8color: "green"width: 50; height: 50}// 键盘焦点focus: trueKeys.onLeftPressed: spuare.x -= 8Keys.onRightPressed: spuare.x += 8Keys.onUpPressed: spuare.y -= 8Keys.onDownPressed: spuare.y += 8// + - 放大和缩小Keys.onPressed: function (event) {switch(event.key) {case Qt.Key_Plus:      // shift +  放大spuare.scale += 0.2break;case Qt.Key_Minus:  // shift -  缩小spuare.scale -= 0.2break;}}}
}

这段代码是一个使用QtQuick和QML编写的简单界面示例。它包含了几个元素,如窗口、矩形、文本输入框和按键响应等。

首先,在代码开头我们导入了几个QtQuick相关的模块。

接下来,定义了一个窗口(Window)元素,设置了它的一些属性,如可见性、宽度、高度和标题等。

窗口内部有一个矩形(Rectangle)元素,设置了它的宽度、高度和颜色。

在矩形内部有几个文本输入框(TextInput)元素,每个文本输入框设置了位置、宽度、高度、默认文本和颜色等属性。其中,输入框input1和input2没有指定键盘焦点,而输入框input3和input4之间设置了键盘焦点切换Tab键的功能。

在矩形下方,还有一个更大的矩形容器,它的颜色为蓝色,用于演示焦点范围(FocusScope)的应用。这个容器内部又包含了两个自定义的文本输入框(TLineEditV1元素),类似于上面的输入框,但使用了不同的样式设置。

矩形的右侧是另一个矩形(rect1),用于展示文本编辑器(TTextEdit)的使用。这个编辑器设置了位置、宽度、高度、默认文本和焦点等属性。

最后,是一个按键响应(Keys)元素。它包含了一些按键事件处理函数,如左、右、上、下方向键表示移动一个矩形(spuare)的位置,加号(+)和减号(-)表示缩放矩形的大小。

总的来说,这段代码演示了在QML中如何创建窗口、矩形、文本输入框和按键响应的基本用法。


QML语法子文件 TLineEditV1.qml

import QtQuick 2.0Rectangle {width: 96; height: input.height + 20color: "lightsteelblue"border.color: "gray"// 如果您想导出TextInput完全可以通过使用property alias input: input。第一input是属性名,其中第二个输入是元素id。/* 在这段代码中,`property alias`用于创建一个别名属性,使得可以通过该别名来访问其他元素的属性。1. `text: input.text`:创建了一个别名属性`text`,它与`input`元素的`text`属性相同。这意味着可以通过`text`属性直接访问`input`元素的`text`属性。例如,`window.text`将等同于`window.input.text`。2. `input: input`:创建了一个别名属性`input`,它与`input`元素相同。这意味着可以通过`input`属性直接访问`input`元素本身。例如,`window.input`将等同于`input`元素本身。通过使用`property alias`,可以方便地在代码中访问其他元素的属性和对象,简化了代码的书写和阅读。*/property alias text: input.textproperty alias input: inputTextInput {id: inputanchors.fill: parentanchors.margins: 4focus: truetext: "请输入..."}
}

该代码段的目的是创建一个矩形框和一个文本输入框,并使用别名属性来简化对文本输入框属性的访问。

首先,通过import QtQuick 2.0语句导入了QtQuick模块。

代码中的主体是一个矩形(Rectangle)元素,设置了它的宽度、高度、颜色和边框颜色等属性。

接下来使用了property alias语法来创建别名属性。其中包含了两个别名属性:

  1. text: input.text:这条语句创建了一个别名属性text,使得可以通过text属性直接访问input元素的text属性。例如,window.text将等同于window.input.text

  2. input: input:这条语句创建了一个别名属性input,使得可以通过input属性直接访问input元素本身。例如,window.input将等同于input元素本身。

通过使用property alias语法,可以方便地在代码中访问其他元素的属性和对象,简化了代码的书写和阅读。

在矩形元素的内部,定义了一个文本输入框(TextInput),设置了它的id、填充锚点、边距、焦点和默认的提示文本等属性。

总的来说,该代码段实现了一个带有别名属性的矩形和文本输入框,使得可以更方便地访问和操作文本输入框的属性。


QML语法子文件 TTextEdit.qml

import QtQuick 2.0FocusScope {width: 96; height: 96Rectangle {anchors.fill: parentcolor: "red"border.color: "black"border.width: 5}property alias text: input.textproperty alias input: inputTextEdit {id: inputanchors.fill: parentanchors.margins: 4color: "white"focus: true}
}

代码中的每句语法的解释如下:

  1. import QtQuick 2.0:导入QtQuick 2.0模块,这是使用Qt Quick构建用户界面的模块。这里将其导入到当前QML文件中。

  2. FocusScope:创建了一个焦点范围元素。焦点范围用于管理和控制在其中的元素之间的焦点顺序。

  3. width: 96; height: 96:设置FocusScope元素的宽度和高度为96。

  4. Rectangle:创建了一个矩形元素。

  5. anchors.fill: parent:将该矩形元素的边缘与父元素(即FocusScope)的边缘对齐,使得它的大小与父元素相同。

  6. color: "red":设置矩形元素的颜色为红色。

  7. border.color: "black":设置矩形元素的边框颜色为黑色。

  8. border.width: 5:设置矩形元素的边框宽度为5。

  9. property alias text: input.text:创建一个别名属性text,使得可以通过text属性直接访问input元素的text属性,简化了代码的书写和阅读。

  10. property alias input: input:创建一个别名属性input,使得可以通过input属性直接访问input元素本身,简化了代码的书写和阅读。

  11. TextEdit:创建了一个文本编辑器元素。

  12. id: input:给该文本编辑器元素设置了一个id,方便在其他地方引用。

  13. anchors.fill: parent:将该文本编辑器元素的边缘与父元素(即矩形)的边缘对齐,使得它的大小与父元素相同。

  14. anchors.margins: 4:设置文本编辑器元素与父元素的边缘间隔为4,即在父元素之内留有一定的空隙。

  15. color: "white":设置文本编辑器元素的文字颜色为白色。

  16. focus: true:设置文本编辑器元素的焦点为true,即默认情况下获得焦点。

总体来说,该代码段创建了一个带有焦点范围的元素,其内部包含一个带有别名属性的矩形和一个文本编辑器。这样可以方便地通过别名属性访问和操纵文本编辑器的属性,同时实现了焦点的管理和控制。


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

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

相关文章

Linux系统进程概念详解

这里写目录标题 冯诺依曼体系结构操作系统(Operator System)1.概念2.目的3.管理4.系统调用和库函数概念 进程1.概念2.描述进程-PCB3.查看进程4.通过系统调用获取进程标示符5.通过系统调用创建进程-fork 进程状态1.Linux内核源代码2.进程状态查看 进程优先级1.基本概念2.查看系统…

投个 3D 冰壶,上班玩一玩

本篇文章将介绍如何使用物理引擎和图扑 3D 可视化技术来呈现冰壶运动的模拟。 Oimo.js 物理引擎 Oimo.js 是一个轻量级的物理引擎,它使用 JavaScript 语言编写,并且基于 OimoPhysics 引擎进行了改进和优化。Oimo.js 核心库只有 150K ,专门用…

5G的发展过程

目录 1.什么是5G 2.5G与4G的区别 3.5G的应用领域 4.5G给人类带来的福利 5.5G未来的发展趋势 1.什么是5G 5G技术是第五代移动通信技术,它是对之前的2G、3G和4G技术的升级和革新。5G技术具有更高的数据传输速度、更低的延迟和更大的网络容量,为人们提供…

Java-API简析_java.net.InetSocketAddress类(基于 Latest JDK)(浅析源码)

【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://blog.csdn.net/m0_69908381/article/details/131870760 出自【进步*于辰的博客】 因为我发现目前,我对Java-API的学习意识比较薄弱…

办公软件ppt的制作

毕业找工作太难了,赶紧多学点什么东西吧,今天开始办公软件ppt的制作学习。 本文以WPS作为默认办公软件,问为什么不是PowerPoint,问就是没钱买不起,绝对不是不会破解的原因。 一.认识软件 在快捷工具栏中顾名思义就是一…

微服务基础理论

微服务简介 微服务Microservices之父,马丁.福勒,对微服务大概的概述如下: 就目前而言,对于微服务业界并没有一个统一的、标准的定义(While there is no precise definition of this architectural style ) 。但通在其…

Express 框架的基本操作

目录 1、应用生成器 2、基本路由 2.1、在跟路由下配置 GET请求,返回对应相应内容。 2.2、在跟路由下配置 POST请求,返回对应相应内容。 2.3、在跟路由下配置 PUT请求,返回对应相应内容。 2.4、在根路由下配置DELETE请求,返回对…

音视频开发-ffmpeg介绍-系列一

目录 一.简介 FFmpeg框架的基本组成包含: 二. FFmpeg框架梳理音视频的流程​编辑 基本概念: 三.ffmpeg、ffplay、ffprobe区别 4.1 ffmpeg是用于转码的应用程序 4.2 fffplay是用于播放的应用程序 4.3 ffprobe是用于查看文件格式的应用程序 4.4 ffmpeg是用于转…

华为鲲鹏920 aarch64 版本 Ambari HDP 下载地址

声明:为有效缓解各位同行兄弟们的痛,特推出此文 本文能够适配兼容 华为鲲鹏920 aarch64 版本,仅限 CentOS7、openEuler20.03-LTS 操作系统 以下是详细下载地址 1、CentOS7 aarch64版本 CentOS7 aarch64 https://mirrors.huaweicloud.com/…

《零基础入门学习Python》第054讲:论一只爬虫的自我修养2:实战

0. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式! 今天我们决定在实战中来进行学习,会举两个例子,第一个例子是我们会下载一只猫,第二个例子是我们用Python来模拟浏览器通过在线的…

MySQL8.0索引新特性

文章目录 1 支持降序索引2 隐藏索引 1 支持降序索引 举例:分别在MySQL 5.7版本和MySQL 8.0版本中创建数据表ts1,结果如下: CREATE TABLE ts1(a int,b int,index idx_a_b(a,b desc) );在MySQL 5.7版本中查看数据表ts1的结构,从结…

IntelliJ IDEA2023中利用maven-archetype-quickstart模板创建项目无src文件夹及maven插件下载过慢问题的解决

目录 介绍问题之解决问题2的解决问题1的解决 介绍 昨天下载并安装了IntelliJ IDEA 2023的最新版(以下简称为IDEA 2023),学习利用该IDE编写Java项目及将其与maven结合构建项目。我所安装的maven是去年暑假安装的,版本为Apache Mav…

认识主被动无人机遥感数据、预处理无人机遥感数据、定量估算农林植被关键性状、期刊论文插图精细制作与Appdesigner应用开发

目录 第一章、认识主被动无人机遥感数据 第二章、预处理无人机遥感数据 第三章、定量估算农林植被关键性状 第四章、期刊论文插图精细制作与Appdesigner应用开发 更多推荐 遥感技术作为一种空间大数据手段,能够从多时、多维、多地等角度,获取大量的…

【数据结构常见七大排序(一)】—插入排序篇【直接插入排序】And【希尔排序】

目录 1.排序的概念及其运用1.1排序的概念1.2排序运用​​​​​​​​​​​​​​​​​​​​​1.3常见的七大排序 ​​2.直接插入排序2.1基本思想​​2.2直接插入排序2.3动图助解2.4直接插入排序源码​2.5直接插入排序的特性总结 ​​3.希尔排序( 缩小增量排序 )​​3.1希尔…

STM32CubeMX X-CUBE-AI更新模型

如题,我采用一个采用stm32CUBEMX生成了工程,工程里面使用了X-CUBE-AI对自定义的模型进行模型压缩,但是我经常要更新模型,那么怎样更新模型了。这里开博客记录一下。 如图所示,为基于STM32CUBEMX生成的工程文件目录结构…

C/C++ 程序 IDE 开发工具 CLion

下载地址: https://www.jetbrains.com/clion/ https://www.jetbrains.com/clion/ 下载地址: https://www.jetbrains.com/clion/download/ https://www.jetbrains.com/clion/download/ 历史版本(老版本)下载地址: h…

关于正则表达式的简单介绍以及使用

一、介绍 正则表达式通常被用来检索匹配某种模式(规律)的文本 日常文本检索,如果单纯检索某个数字,字母,或者单词匹配出来的结果较多,而面对目标文件内容较大的时,我们也不可能肉眼对检索出来的…

leetcode 542. 01 矩阵

给定一个由 0 和 1 组成的矩阵 mat ,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。 两个相邻元素间的距离为 1 。 示例 1: 输入:mat [[0,0,0],[0,1,0],[0,0,0]] 输出:[[0,0,0],…

【Unity2D】设置一物体默认在其他物体之上不被遮挡

比如我想让机器人显示在箱子的前面。 点击箱子,将其层级设置在机器人的后面。 即修改箱子的Order in Layer 在机器人之后 物体默认的Order in Layer 都是0 ,将箱子的Order in Layer修改为-1即可 这样将确保先绘制机器人,然后绘制箱子。这样…

C#鼠标拖拽,移动图片实例

最近工作需要做一个鼠标可以拖拽移动图片的功能。 写了几个基本功能,勉强能用。这里记录一下。欢迎大神补充。 这个就是完成的功能。 下边的绿色是一个pictureBox,白色框也是一个pictureBox,他们二者是子父级关系。 绿色是父级&#xff0c…