【Qt之Quick模块】5. QML基本类型及示例用法

QML格式

以下是一个QML文件

import QtQuick 2.12Window {id: mainWindowwidth: 400height: 300visible: truetitle: "My QML Application"Rectangle {id: rectwidth: 200height: 100color: "red"Text {id: textItemtext: "Hello World!"font.pixelSize: 20color: "white"anchors.centerIn: parent}MouseArea {id: mouseAreaanchors.fill: parentonClicked: {rect.color = "blue"textItem.text = "Clicked!"}}}
}

文件内是啥意思呢?
第一行 : 导入了QtQuick模块的2.12版本
第二行Window : 定义了一个Window元素作为应用程序的主窗口,并设置了窗口的属性
Rectangle元素 : 在Window元素内部,创建了一个Rectangle元素作为子元素,用于显示一个红色的矩形
Text元素 : 在Rectangle元素内部,又创建了一个Text元素用于显示文本,并设置了文本的属性
MouseArea元素 : 还创建了一个MouseArea元素用于处理鼠标点击事件,当鼠标点击矩形时,改变了矩形的颜色和文本的内容。

这个例子呢,描述了QML语言的基本格式和一些常用的元素和属性的使用方式。

QML基本格式

QML语言的基本格式主要有如下:

  1. 导入模块:使用import语句导入需要使用的模块,如import QtQuick 2.12表示导入QtQuick模块的2.12版本。

  2. 定义窗口:使用Window元素定义应用程序的主窗口,可以设置窗口的属性,如标题、大小等。

  3. 声明属性:使用property语句声明QML对象的属性,可以设置属性的类型、默认值等。

  4. 布局元素:使用布局元素(如Row、Column等)来定义子元素的布局方式。

  5. 添加子元素:使用item元素添加子元素到父元素中,可以设置子元素的属性和信号槽。

  6. 定义信号和槽:使用signal和slot语句定义对象的信号和槽函数。

  7. 事件处理:使用事件处理器来处理鼠标点击、键盘事件等。

  8. 绑定属性:使用bind语句将一个属性绑定到另一个属性或表达式上。

  9. 创建实例:使用创建对象语法创建QML对象的实例,如Rectangle{…}。

  10. 设置根元素:使用ApplicationWindow或Window元素将窗口设置为应用程序的根元素。

  11. 运行应用:使用QQmlApplicationEngine加载QML文件并运行应用程序。

具体可以根据实际需求进行扩展和调整。

QML基本类型

在 QML 中,有以下基本类型:

  1. int:整数类型。
Rectangle {function myFunction() {// 输出 debug 信息console.log("1+1 =" + (1+1));}Component.onCompleted: {myFunction();}
}

结果:
在这里插入图片描述
2. real:浮点类型。
3. double:双精度浮点类型。
4. string:字符串类型。

Rectangle {function myFunction() {// 输出 debug 信息console.log("helloworld");}Component.onCompleted: {myFunction();}
}

结果:
在这里插入图片描述
5. bool:布尔类型。
6. color:颜色类型,用于表示颜色的RGBA值。
7. var:通用类型,可以表示任意类型的数据。

    Item {property var myVar: "Hello World"Component.onCompleted: {console.log(myVar) // 输出 "Hello World" 到控制台}}

结果:
在这里插入图片描述
8. date:日期类型。

Rectangle {Item {property var currentDate: new Date()Component.onCompleted: {console.log(currentDate.toString()) // 输出当前日期和时间到控制台}}
}

结果:
在这里插入图片描述
9. point:点类型,用于表示二维空间中的点。

Item {width: 200height: 200property var point: Qt.point(50, 100)Component.onCompleted: {console.log(point.x, point.y) // 输出点对象的坐标值到控制台}
}

结果:
在这里插入图片描述
10. size:尺寸类型,用于表示宽度和高度。

Item {width: 200height: 200property size var_size: Qt.size(0, 2)Component.onCompleted: {console.log(var_size) // 输出点对象的坐标值到控制台}
}

结果:
在这里插入图片描述
11. rect:矩形类型,用于表示矩形区域的左上角坐标和宽高。

Item {width: 200height: 200property rect var_rect: Qt.rect(0, 0, 1, 2)Component.onCompleted: {console.log(var_rect) // 输出点对象的坐标值到控制台}
}

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

示例

import QtQuickWindow {width: 640height: 480visible: truetitle: qsTr("Hello World")Rectangle{width: 200height: 200x: 50y: 100border.color: "blue"property color nextColor : "red"onNextColorChanged:console.log("nextColor:" + nextColor.toString())property list<Rectangle> childRects: [Rectangle{color:"red"},Rectangle{color:"blue"}]MouseArea{anchors.fill: parentonClicked: {for(var i = 0; i < 2; ++i){console.log("color", i, parent.childRects[i].color)}}}}
}

这段代码是一个使用QtQuick库创建的窗口应用程序。窗口的宽度和高度都被设置为640和480,设置窗口可见并设置标题为"Hello World"。

在窗口中创建了一个矩形区域。矩形的宽度、高度、x和y坐标分别设置为200、200、50和100。矩形的边框颜色被设置为蓝色。矩形还定义了一个名为nextColor的颜色属性,并在其值改变时输出到控制台。

矩形还定义了一个名为childRects的矩形列表属性。列表中包含两个矩形,颜色分别为红色和蓝色。

在矩形区域上定义了一个MouseArea鼠标区域。鼠标区域的大小与父元素相同。当鼠标在该区域内被点击时,会遍历childRects列表并输出每个矩形的颜色到控制台。
结果:
在这里插入图片描述
以上就是QML语言的基本用法

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

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

相关文章

ueditor富文本编辑器中图片上传地址配置以及抓取远程图片地址的配置

一&#xff1a;图片上传保存地址配置 打开文件ueditor.php,找到imagePathFormat进行修改即可 一&#xff1a;远程抓取图片配置 打开文件ueditor.config.js,找到catchRemoteImageEnable&#xff0c;取消注释即可

python dash 写一个登陆页 4

界面 代码&#xff1a; 这里引入了dash_bootstrap_components 进行界面美化 &#xff0c;要记一些className&#xff0c;也不是原来说的不用写CSS了。 from dash import Dash, html, dcc, callback, Output, Input, State import dash_bootstrap_components as dbc app Dash…

[Linux] MySQL数据表(数据结构)管理

一、数据库 1.1 数据库的基本概念 数据库&#xff08;database&#xff09;是用来组织、存储和管理数据的仓库 数据库管理系统&#xff08;DBMS&#xff09;&#xff1a;是实现对数据有效组织&#xff0c;管理和存取的系统软件。 数据的建立和维护功能&#xff0c;数据定义…

STM32实战之深入理解I²C通信协议

目录 IC的物理层 IC的协议层 IC特点 IC 总线时序图 软件模拟IC时序分享 例程简介 例程分享 STM32的IC外设 IIC&#xff08;Inter-Integrated Circuit&#xff09;&#xff0c;也称为IC或TWI&#xff08;Two-Wire Interface&#xff09;&#xff0c;是一种广泛使用的串行…

Apache Flink 进阶教程(六):Flink 作业执行深度解析

目录 前言 Flink 四层转化流程 Program 到 StreamGraph 的转化 StreamGraph 到 JobGraph 的转化 为什么要为每个 operator 生成 hash 值&#xff1f; 每个 operator 是怎样生成 hash 值的&#xff1f; JobGraph 到 ExexcutionGraph 以及物理执行计划 Flink Job 执行流程…

什么是EMC工程师?

摘要: 今天来介绍一下什么是EMC工程师。一 EMC工程师起源要了解什么是EMC工程师&#xff0c;我们首先要了解什么是EMC。 今天来介绍一下什么是EMC工程师。 一 EMC工程师起源 要了解什么是EMC工程师&#xff0c;我们首先要了解什么是EMC。 工程师这个职业相信大家都耳熟能详…

Maven之插件入门

官方文档&#xff1a;https://maven.apache.org/guides/plugin/guide-java-plugin-development.html 命名规范 <yourplugin>-maven-plugin 创建项目 生成项目 方式一、IDEA 2023 方式二、命令行 mvn archetype:generate -DgroupIdcn.lsj -DartifactIdhello-maven-pl…

接口测试学习笔记

文章目录 认识urlhttp协议接口规范Postman实现接口测试设计接口测试用例使用软件发送请求并查看响应结果Postman 自动关联Postman如何提交multipart/form-data请求数据Postman如何提交查询参数Postman 如何批量执行用例单接口测试Postman 断言Postman参数化 接口测试自动化requ…

RabbitMQ入门指南(九):消费者可靠性

专栏导航 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、消费者确认机制 二、失败重试机制 三、失败处理策略 四、业务幂等性 1.通过唯一标识符保证操作的幂等性 2.通过业务判断保证操作的幂等性 总结 前言 RabbitMQ是一个高效、可靠的开源消息队列系…

TikTok地理标签:通过短视频游走全球景点

TikTok&#xff0c;这个全球短视频平台&#xff0c;不仅是创意的播放场所&#xff0c;更是连接全球用户的数字旅行通道。通过TikTok的地理标签&#xff0c;用户可以在短视频中游走于世界各地的景点&#xff0c;感受异国风情&#xff0c;分享旅行心情。本文将深入探讨TikTok地理…

7.3 uvm_config_db in UVM

uvm_config_db类派生自uvm_resource_db类。它是uvm_resource_db顶部的另一层便利层&#xff0c;简化了用于uvm_component实例的基本接口&#xff08;资源库的访问方法&#xff09;。 下面uvm_config_db类的代码段取自uvm源代码。 class uvm_config_db#(type Tint) extends uv…

【GitHub精选项目】短信系统测试工具:SMSBoom 操作指南

前言 本文为大家带来的是 OpenEthan 开发的 SMSBoom 项目 —— 一种用于短信服务测试的工具。这个工具能够发送大量短信&#xff0c;通常用于测试短信服务的稳定性和处理能力。在合法和道德的范畴内&#xff0c;SMSBoom 可以作为一种有效的测试工具&#xff0c;帮助开发者和系统…

【编译原理】基于词法分析器的LL1语法分析器

【编译原理】基于词法分析器的LL1语法分析器 实验要求 设计一个满足以下要求的⽂法&#xff1a; &#xff08;1&#xff09;识别只包含变量声明语句和执行语句程序段的语法结构合法性&#xff1b; &#xff08;2&#xff09;变量声明中只使用int,char,float 3类基本类型&…

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…

【C++】STL 容器 - list 双向链表容器 ① ( 容器特点 | 容器操作时间复杂度 | 构造函数 )

文章目录 一、 list 双向链表容器简介1、容器特点2、容器操作时间复杂度3、遍历访问5、头文件 二、 list 双向链表容器 构造函数1、默认无参构造函数2、创建包含 n 个相同元素的 list 双向链表3、使用初始化列表构造 list 双向链表4、使用另外一个 list 容器 构造 list 双向链表…

【Java基础】Java中异常分类,他们之间的区别?

&#x1f341;Java中异常分哪两类 &#x1f341;Java中异常类&#x1f341;受检异常&#x1f341;非受检异常 &#x1f341;拓展知识仓&#x1f341;什么是Throwable&#x1f341;Error和Exception的区别和联系&#x1f341; 列举几个常用的RuntimeException&#x1f341;Java异…

关于“Python”的核心知识点整理大全41

目录 scoreboard.py game_functions.py game_functions.py 14.3.8 显示等级 game_stats.py scoreboard.py scoreboard.py scoreboard.py game_functions.py game_functions.py alien_invasion.py 14.3.9 显示余下的飞船数 ship.py scoreboard.py 我们将最高得分圆整…

微信这样分类客户,帮你轻松提升业绩!

无论是什么行业&#xff0c;都会遇到各种各样的客户&#xff0c;能不能成交这些客户&#xff0c;关键的一点在于有没有明确的客户分类。 今天就给大家分享几个高效分类客户的方法&#xff0c;帮助大家提高成交率和业绩。 1、分组管理 在微信中创建不同的分组&#xff0c;比如…

MyBatis——MyBatis的缓存

MyBatis的缓存 创建工程&#xff1a; 1缓存介绍 为什么使用缓存&#xff1f; 首次访问时&#xff0c;查询数据库&#xff0c;并将数据存储到内存中&#xff1b;再次访问时直接访问缓存&#xff0c;减少IO、硬盘读写次数、提高效率 Mybatis中的一级缓存和二级缓存&#xff1f;…

IP 地址归属地查询

IP 地址归属地查询 1. IP 地址归属地查询2. IP 地址归属地查询References 1. IP 地址归属地查询 https://tool.lu/ip/index.html 2. IP 地址归属地查询 https://www.ip.cn/ip/.html References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/