QtQuick-QML类型系统-对象类型

数据类型可以是QML语言原生的,可以通过C++注册,可以由独立的QML文档作为模块进行加载,也可以由开发者通过C++类型或者定义QML组件来提供自定义的类型。

不过,无论如何,QML引擎都会保证这些类型的属性和实例的类型安全。

一、 基本类型

1. 基本类型

基本类型不能用来声明一个QML对象,例如int{}是不被允许的。

基本类型一般用于以下两种值:

  • 单值(例如, int是单个数字,var可以是单个项目列表);
  • 一个包含了一组简单的“属性-值”对的值(例如,size指定的值包含了width和height属性)

部分基本类型是引擎默认支持的,不需要导入语句即可使用;另外的基本类型则在模块中提供,需要导入才能使用。

另外,Qt全局对象提供了一些非常有用的函数操作基本类型的值,如darker()fromatDatehals()md5()qsTr()quit()等,可以在帮助文档中索引QML Global Object关键字查看更多内容。

QML语言原生支持的基本类型

类型描述类型描述
int整型url资源定位符
bool布尔值,true/falselistQML对象列表
real单精度浮点数var通用属性类型
double双精度浮点数enumeration枚举值
string字符串————————

QML其他基本类型由某些模块提供,如QtQuick模块提供的基本类型如下:

QtQuick模块提供的基本类型表

类型描述
colorARGB颜色值,可以用多种方法表示
fontQFont的QML类型,包含了QFont的属性值
matrix4x4一个4X4的矩阵
quaternion一个四元数,包含一个标量以及x、y和z属性
vector2d二维向量,包含x和y两个属性
vector3d三维向量,包含x、y和z共3个属性
vector4d四维向量,包含x、y、z和w个属性
date日期值
point点值,包含x和y两个属性
size大小值,包含width和height两个属性
rect矩形值,包含x、y、width和height4个属性

2.基本类型的属性改变行为

一些一本类型也包含属性,如font类包含pixelSizefamiltbold。这里所说的属性与QML类型(如Rectangle)的属性不同:基本类型的属性没有自己的属性改变信号,只能为基本类型自身创建一个属性改变信号处理器。

例如:

    Text{//不可用onFont.pixelSizeChanged: doSomething()//不可用font{onPixelSizeChanged: doSomething}//可用onFontChanged: doSomething()}

另外,每当基本类型的一个特性改变时,该基本类型都会发射自身的属性改变信号,例如:

    Text {onFontChanged: console.log("font changed")text: "hello Qt!"Text {id: otherText}focus: true//按下键盘数字键1,2,3都会调用onFontChanged信号处理器Keys.onDigit1Pressed: font.pixelSize += 1Keys.onDigit2Pressed: font.italic = !font.italicKeys.onDigit3Pressed: font = otherText.font}

二、JavaScript类型

QML引擎直接支持JavaScript对象和数组,任何标注JavaScript类型都可以在QML中使用var类型进行创建和存储。
例如下面的Date和Array类型:

    Item {property var theArray: []property var theDate: new Date()Component.onCompleted: {for (var i=0; i<10;++i)theArray.push("Item " +i)console.log("There are", theArray.length, "items in the array")console.log("The time is", theDate.toUTCString());}}

三、对象类型

QML对象类型用于QML对象的实例化。对象类型与基本类型最大的区别是,基本类型不能用于声明一个对象,而对象类型可以用来声明一个对象。

QML对象类型继承自QtQObject,由各个模块提供。应用程序通过导入模块使用各种对象类型。QtQuick模块包含了创建用户界面所需要的最基本的对象类型。除了导入模块,还可以通过另外两种方式自定义QML对象类型:

  1. 创建.qml文件来定义类型
  2. 通过C++定义QML类型,然后在QML引擎中注册该类型。

参考书籍:《QML和Qt Quick快速入门(霍亚飞)》

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

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

相关文章

@DateTimeFormat 和 @JsonFormat 注解详解

DateTimeFormat 和 JsonFormat 注解详解 在 Java 开发尤其是基于 Spring 的项目中&#xff0c;日期和时间的处理是必不可少的一部分。DateTimeFormat 和 JsonFormat 这两个注解被广泛用于日期和时间的格式化处理。本文将深入探讨这两个注解的使用场景、差异及实践应用。 1. 基…

力扣 151反转字符串中的单词

思路 单词前面有空格&#xff0c;后面有空格&#xff0c;中间有多余空格 1去掉多余空格 2全部翻转 3单词内部翻转 这里也用双指针&#xff0c;一个start,一个end,当end遇到空格(即一个单词的结尾&#xff09;或者是到达字符串s的末尾时 reverse(s,start,end-1) //去除空…

算法力扣刷题记录 五十一【654.最大二叉树】

前言 二叉树篇&#xff0c;继续。 记录 五十一【654.最大二叉树】 一、题目阅读 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点&#xff0c;其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。…

套接字编程一(简单的UDP网络程序)

文章目录 一、 理解源IP地址和目的IP地址二、 认识端口号1. 理解 "端口号" 和 "进程ID"2. 理解源端口号和目的端口号 三、 认识协议1. 认识TCP协议2. 认识UDP协议 四、 网络字节序五、 socket编程接口1. socket 常见API2. sockaddr结构&#xff08;1&#…

WebGIS的Web服务概述

WebGIS是互联网技术应用于GIS开发的产物&#xff0c;是现代GIS技术的重要组成部分&#xff0c;其中的Web服务是现代WebGIS的核心技术和重要标志&#xff0c;它集GIS、程序组件和互联网的优点于一身&#xff0c;深刻改变了GIS开发和应用的方式&#xff0c;绕过了本地数据转换和本…

Unity 批处理详讲(含URP)

咱们在项目中&#xff0c;优化性能最重要的一个环节就是合批处理&#xff0c;&#xff0c;在早期Unity中&#xff0c;对于合批的处理手段主要有三种&#xff1a; Static Batching Dynamic Batching GPU Instancing 如今Unity 为了提升合批范围与效率&#xff0c;提供了…

白骑士的PyCharm教学目录

一、基础篇 1.1 PyCharm简介 什么是PyCharm&#xff1f;PyCharm的特点与优势安装与设置PyCharm开发环境 1.2 PyCharm基本操作 创建与打开项目编辑器界面介绍快捷键与常用操作 1.3 调试与运行 配置与调试环境断点设置与调试流程运行与调试Python程序 1.4 版本控制与集成 …

ICT测试原理

目录&#xff1a; 一、什么是ICT 二、ICT在哪使用 三、ICT如何测试 1、隔离(Guarding)原理 2、电容器测试原理 3、电感器测试原理 4、普通二极管测试方法(MODE D) 5、晶体管的测量原理 (三端点)(MODE TR) 6、短/开路的测试原理 1&#xff09;学习短路表 2&#xff…

基于chrome插件的企业应用

一、chrome插件技术介绍 1、chrome插件组件介绍 名称 职责 访问权限 DOM访问情况 popup 弹窗页面。即打开形式是通过点击在浏览器右上方的icon&#xff0c;一个弹窗的形式。 注: 展示维度 browser_action:所有页面 page_action:指定页面 可访问绝大部分api 不可以 bac…

【数据结构】排序算法——Lessen1

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

WebKit 引擎:CSS 悬停效果的魔法师

WebKit 引擎&#xff1a;CSS 悬停效果的魔法师 在现代网页设计中&#xff0c;CSS 悬停效果&#xff08;UI Effects&#xff09;是提升用户体验的重要手段之一。通过这些效果&#xff0c;设计师可以为用户带来更加丰富和动态的交互体验。WebKit 引擎&#xff0c;作为许多主流浏…

【动态专修】2024年五菱维修手册和电路图资料更新

经过整理&#xff0c;2017-2024年五菱汽车全系列已经更新至汽修帮手资料库内&#xff0c;覆盖市面上99%车型&#xff0c;包括维修手册、电路图、新车特征、车身钣金维修数据、全车拆装、扭力、发动机大修、发动机正时、保养、电路图、针脚定义、模块传感器、保险丝盒图解对照表…

人、智能、机器人……

在遥远的未来之城&#xff0c;智能时代如同晨曦般照亮了每一个角落&#xff0c;万物互联&#xff0c;机器智能与人类智慧交织成一幅前所未有的图景。这座城市&#xff0c;既是科技的盛宴&#xff0c;也是人性与情感深刻反思的舞台。 寓言&#xff1a;《智光与心影》 在智能之…

Python自动化DevOps任务入门

目录 Python自动化DevOps任务入门 一、环境和工具配置 1. 系统环境与Python版本 2. 虚拟环境搭建 3. 必要的库安装 二、自动化部署 1. 使用Fabric进行流式部署 2. 使用Ansible编写部署剧本 三、持续集成和测试 1. 配置CI/CD工具 选择工具 配置工具 构建和测试自动…

【SLAM】最最最简单的直线拟合情形下的多种求解方法

本文我们讨论一个最最最简单情况下的拟合的情形&#xff0c;并尝试使用不同的方法来进行求解。 假如有一组数 x 1 , x 2 , x 3 , . . . , x n x_1,x_2,x_3,...,x_n x1​,x2​,x3​,...,xn​&#xff0c;对应的值为 y 1 , y 2 , y 3 , . . . , y n y_1,y_2,y_3,...,y_n y1​,y2…

10.11和10.8那个大(各种ai的回答)

问题&#xff1a;10.11和10.8两个数哪个大 腾讯混元 ✔️ chatGPT ❎ 通义千问 ❎ 文心一言 ✔️ 智谱清言 ❎ 讯飞星火 ✔️ C知道 ❎ 豆包 ✔️

TCP粘包问题详解和解决方案【C语言】

1.什么是TCP粘包 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一种面向连接的、可靠的、基于字节流的传输协议&#xff0c;它保证了数据的可靠性和顺序性。然而&#xff0c;由于TCP是基于字节流而不是消息的&#xff0c;因此在传输过…

【接口自动化_08课_Pytest+Yaml+Allure框架】

上节课一些内容 的补充 1、openxl这个方法&#xff0c;第一个元素是从1开始的&#xff0c;不是从0开始 回写的列在程序里写的是11&#xff0c;是因为是固定值 一、1. Yaml入门及应用 1、什么是yaml YAML&#xff08;/ˈjməl/&#xff0c;尾音类似camel骆驼&#xff09;是一…

Finding columns with a useful data type 找到合适的数据列的类型

Finding columns with a useful data type 在确定了原始查询的数据列数之后&#xff0c;接下来就是要确定合适的数据列的数据类型。可以用 SELECT a 的方式判断对应的数据列方式&#xff0c;有时候可以通过错误信息判断数据列的类型。如果服务器的响应没有报错&#xff0c;而…

一文带你了解提升私域成交的四大关键因素

对于消费者而言&#xff0c;在购物时&#xff0c;需求、触点和信任是三个必须满足的条件。这三者缺一不可&#xff0c;是构成购买决策的三大支柱。然而&#xff0c;在实际的购买流程中&#xff0c;这三个要素的出现顺序却可以有多种不同的组合方式。这些不同的顺序反映了消费者…