Qml中QtObject的用法
QtObject 类型是一个非可视元素,仅包含 objectName 属性。
如果需要一个非常轻量级的类型来包含一组自定义属性,那么创建一个 QtObject 会很合适:
1、自定义属性
以下是一个简单的示例,展示了如何在QML中使用 QtObject 来定义自定义属性:
1 import QtQuick 2.0
2
3 Item
4 {
5 QtObject
6 {
7 id: attributes
8 property string name
9 property int size
10 property variant attributes
11 }
12
13 Text { text: attributes.name }
14 }
在这个示例中,我们创建了一个 QtObject,并定义了三个属性:name、size 和 attributes。然后,我们在一个 Text 元素中使用了 attributes.name 来显示 name 属性的值
2、与C++集成
QtObject 继承自 QObject,因此它对于C++集成也非常有用。通过使用 QObject::findChild() 方法,C++应用程序可以在QML组件中定位项目。
例如,以下C++代码展示了如何定位一个子 Rectangle 项并动态更改其颜色值:
1 // MyRect.qml
2
3 import QtQuick 2.0
4
5 Item
6 {
7 width: 200; height: 200
8
9 Rectangle
10 {
11 anchors.fill: parent
12 color: "red"
13 objectName: "myRect"
14 }
15 }
1 // main.cpp
2
3 QQuickView view;
4 view.setSource(QUrl::fromLocalFile("MyRect.qml"));
5 view.show();
6
7 QQuickItem *item = view.rootObject()->findChild<QQuickItem*>("myRect");
8 if (item)
9 item->setProperty("color", QColor(Qt::yellow));
3、遍历属性
在QML中,可以使用C++或JavaScript来遍历 QtObject 的所有属性。
1 void CPropertys::printPropertys(QObject *obj) {
2 for (int i = 0; i < obj->metaObject()->propertyCount(); i++) {
3 QMetaProperty metaProperty = obj->metaObject()->property(i);
4 qDebug() << QString("Property name:%1 typeName:%2 typeId:%3)
5 .arg(metaProperty.name())
6 .arg(metaProperty.typeName())
7 .arg(metaProperty.typeId())
8 << " value:" << metaProperty.read(obj);
9 }
10 }
在这个示例中,我们使用 metaObject() 方法获取对象的元对象,并遍历其所有属性
Qml中QtObject的用法的更多相关文章
- qml 中 使用 shader
使用绘制工具如Photoshop .Flash已经可以创建许多效果非常绚丽的图像.动画等. Qt/QML 的努力其实是在这些工具发展的后面, 因此很多效果在Qt中无法实现. 不得不佩服Qt小组的才智, ...
- 通过WebChannel/WebSockets与QML中的HTML交互
来源:通过WebChannel/WebSockets与QML中的HTML交互 GitHub:八至 作者:狐狸家的鱼 本文链接:QML与HTML交互 在查询QML与HTML之间通信交互时资料很少,这篇文 ...
- QML中文件的加载(三种方法)
在这里小小总结一下QML文件中如何加载QML文件与JavaScript文件. 1.QML文件中加载JavaScript文件 语法: import <ModuleIdentifier> &l ...
- [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法
一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...
- C#中string.format用法详解
C#中string.format用法详解 本文实例总结了C#中string.format用法.分享给大家供大家参考.具体分析如下: String.Format 方法的几种定义: String.Form ...
- SQL中distinct的用法
SQL中distinct的用法 1.作用于单列 2.作用于多列 3.COUNT统计 4.distinct必须放在开头 5.其他 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出 ...
- Oracle 中 decode 函数用法
Oracle 中 decode 函数用法 含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译 ...
- jQuery中Animate进阶用法(一)
jQuery中animate的用法你了解多少呢?如果仅仅是简单的移动位置,显示隐藏,哦!天哪你在浪费资源!因为animate太强大了,你可以有很多意想不到的用法!让我们一起研究一下吧~~ 首先要了解j ...
- [转载]js中return的用法
一.返回控制与函数结果,语法为:return 表达式; 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果 二.返回控制,无函数结果,语法为:return; 在大多数情况下,为事件处理函 ...
- js中this的用法
经过近几周的模拟面试题,我查询了一些资料,今天就来说说,在js中this的用法吧.方法有四:第一,用作全局变量,第二,用作表该对象,第三,用作构造函数,第四,用作call和applay
随机推荐
- 【ASP.NET Core】调用 Web API 备份数据库
老周不经意间翻了一下博客列表,上一篇水文竟然在 一个月前.啊,大海啊,全是水:时间啊,你跑得真快!过了一个月老周竟没感觉出来,可是这一个月里,好像啥事也没干成,就改了一下几个旧项目.也许是现在大环境真 ...
- Hadoop学习第二天
今天配置Linux网络,首先是虚拟机网络配置,然后是真实机访问虚拟机,然后是配置centos网卡,最后是给IP地址加网络名,然后配置网络服务,但是出错了,目前还没找到问题所在
- 安卓手机上部署nodejs服务器
一.准备软件 Termux 下载地址: 链接:https://pan.baidu.com/s/1J3OQITWc34uT-Mc8B-moPA?pwd=ug9j 提取码:ug9j KSW ...
- [书籍精读]《基于MVC的JavaScript Web富应用开发》精读笔记分享
写在前面 书籍介绍:<JavaScript异步编程>讲述基本的异步处理技巧,包括PubSub.事件模式.Promises等,通过这些技巧,可以更好的应对大型Web应用程序的复杂性,交互快速 ...
- 现代Web安全实践:基于Token与Refresh Token的单点登录(SSO)实现
在数字化转型加速的今天,单点登录(SSO)已成为企业身份管理的核心基础设施.袋鼠云UED团队在过去几年中,为金融.政务.医疗等领域的大型系统构建SSO解决方案.本文将分享基于Token的标准SSO ...
- Kong入门学习实践(2)实验环境搭建
最近在学习Kong网关,因此根据老习惯,我会将我的学习过程记录下来,一来体系化整理,二来作为笔记供将来翻看.由于我司会直接使用Kong企业版,学习过程中我会使用Kong开源版. 本篇,我们学习如何快速 ...
- 7.Java Spring框架源码分析-IOC-创建spring容器
目录 1. 要分析的代码 2. 创建ApplicationContext 2.1. AnnotationConfigApplicationContext构造方法 2.2. 刷新ioc容器 2.2.1. ...
- C# ToolStripStatusLabel中没有 DataBindings
https://social.msdn.microsoft.com/forums/windows/en-US/73de165c-e948-4015-bdcd-570f55a6e365/databind ...
- C# 获取字符串 字节的长度
https://www.cnblogs.com/xiarongrong/p/5168713.html /// <summary> /// 获取字符串字节长度 / ...
- nodejs起一个http2
静态页面 其实就是复制官网的代码 其中证书 是我自己申请的可以用证书 dingshaohua.com import fs from "fs"; import http2 from ...