热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

QML对象的属性

以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「englyf」https:www.jianshu.compfd302877825a每个Q

以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「englyf」https://www.jianshu.com/p/fd302877825a



每个 QML 对象类型都有一组已定义的属性。每个对象类型的实例被创建时,都会带有一组已定义的该对象类型的属性。下面列出来了几种可以指定的不同种类属性。

###对象声明中的属性
QML 文件中的 对象声明 定义了一个新类型。也同样声明了一组对象层次结构,当新定义类型被实例化时,这组结构也会被实例化。
QML 对象类型的属性类型集合如下所示:


  • id 属性
  • 「属性」属性
  • 信号属性
  • 信号处理程序属性
  • 方法属性
  • 附加类型属性和附加信号处理程序属性
  • 枚举属性

下面将详细介绍这些属性类型。
#####id 属性
每个 QML 文档有且只有一个 id 属性。这个属性是由语言自身提供,不能通过任何的对象类型来重新定义或者重写。

如果其它对象需要标识或者引用一个对象,那么必须先对这个被标识或者被引用对象的 id 属性进行赋值。这个 id 的值只能是以小写字母或者下划线 “_” 开头,并且不能包含字母、数字和下划线之外的任何字符。

下面的示例代码中包含了 TextInput 对象和 Text 对象。对象 TextInput 的 id 被设为 「myTextInput」。通过引用 myTextInput.text,Text 的属性 text 的值将和 TextInput 的属性 text 的值保持一致。可以看到两个控件显示相同的文字:

import QtQuick 2.0Column {width: 200; height: 200TextInput { id: myTextInput; text: "Hello World" }Text { text: myTextInput.text }
}

在对象声明的组件范围内,都可以通过对象的 id 引用该对象。所以,在组件范围内,id 的值必须是唯一的。更多的细节可以点击  范围和命名解决方案

一旦对象的实例被创建后,属性 id 的值就不能改动了。其实 id 不是普通的属性,并且具有特殊的语义,比如上面的实例代码中,不可以通过 myTextInput.id 来访问。
#####「属性」属性
对象的「属性」属性是能被赋静态值或者绑定动态表达式的属性。这个属性值可以被其它对象读取。通常它也可以被其它对象修改,除非这个属性所属的 QML 类型明确禁止。

######定义「属性」属性
已通过注册类的  Q_PROPERTY 的类型会被 QML 类型系统注册,所以可以被用来定义「属性」属性。此外,在 QML 文档的对象声明中,可以按照以下的语法来定义一个对象类型的自定义属性:

[default] property

通过上面的方式,可以将特定值暴露给外部对象或者更容易地维护内部状态。

属性名字必须以小写字母开头,而且只能包含字母、数字和下划线。Javascript 保留字 不能再用作属性名。关键字 default 是可选的,如果使用了这个关键字,则会改变被声明的属性含义。



参考英文资料[Qt]https://doc.qt.io/qt-5/qtqml-syntax-objectattributes.html


推荐阅读
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
author-avatar
星宿1970_219
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有