QML语法之property属性

简介: QML语法之property属性

property属性

property是对象的属性,可以为其分配静态值或绑定到动态表达式。

属性的值可以被其他对象读取。

通常,另一个对象也可以修改它,除非特定的QML类型明确地禁止对特定property进行这样的修改。


定义property属性

在c++中,也就是写cpp文件时,可以通过注册类的Q_PROPERTY来为类型定义属性,然后将该类型注册到QML类型系统。

自定义property属性可以用下面的语法在QML文档中声明定义:

[default] [required] [readonly] property <propertyType> <propertyName>

修饰符

default:设置默认值

required:被required指定的属性就必须要一直存在,例如下面的例子:

Rectangle {
    required color
}

例子中创建一个矩形组件,其中color属性始终需要指定,required只能指定属性,不能做初始值。

readonly:设置属性为只读


说明

(1)元素使用他们的元素类型名进行声明,使用他们的属性或者创建自定义属性来定义。
(2)一个属性对应一个值。
(3)id是⼀个⾮常特殊的属性值, 它在⼀个QML⽂件中被⽤来引⽤元素。id不是⼀个字符串, ⽽是⼀个标识符和QML语法的⼀部分。⼀个id在⼀个QML⽂档中是唯⼀的, 并且不能被设置为其它值, 也⽆法被查询
(4)⼀个属性能够设置⼀个值, 这个值依赖于它的类型。如果没有对⼀个属性赋值, 那么它将会被初始化为⼀个默认值。你可以查看特定的元素的⽂档来获得这些初始值的信息。
(5)⼀个属性能够依赖⼀个或多个其它的属性, 这种操作称作属性绑定。当它依赖的属性改变时, 它的值也会更新。这就像订了⼀个协议, 在这个例⼦中height始终是width的两倍。
添加⾃ ⼰定义的属性需要使⽤property修饰符, 然后跟上类型, 名字和可选择的初始化值(property : ) 。如果没有初始值将会给定⼀个系统初始值作为初始值。
(6)alias关键字允许我们转发⼀个属性或者转发⼀个属性对象⾃ ⾝到另⼀个作⽤域。我们将在后⾯定义组件导出内部属性或者引⽤根级元素id会使⽤到这个技术。⼀个属性别名不需要类型, 它使⽤引⽤的属性类型或者对象类型。


property声明可以向外部公开特定值,或者更容易维护某些内部状态。
property属性名称必须以小写字母开头,并且只能包含字母、数字和下划线。

目录
相关文章
|
存储 JavaScript 前端开发
qml var类型详解
qml var类型详解
417 1
|
前端开发 JavaScript C++
打造卓越 QML 层级设计:从入门到精通(一)
打造卓越 QML 层级设计:从入门到精通
3871 1
|
缓存 Ubuntu JavaScript
踩坑记录:QML加载图片资源
踩坑记录:QML加载图片资源
2348 0
|
安全 JavaScript 前端开发
QML信号与信号槽实践指南:轻松掌握现代软件开发的关键技术(三)
QML信号与信号槽实践指南:轻松掌握现代软件开发的关键技术
523 0
qml import 自定义模块 cmake
qml import 自定义模块 cmake
987 1
|
前端开发 C++ Windows
C++生成QML代码与QML里面集成QWidget
这篇文章介绍了如何在C++中生成QML代码,以及如何在QML中集成QWidget,包括使用Qt Widgets嵌入到QML界面中的技术示例。
703 0
QML 界面切换的方法
QML 界面切换的方法
977 1
|
JavaScript 前端开发 安全
【QML 与 C++ 之间的通讯机制】QML 与 Qt 通讯:讲解如何在QML 中使用C++类,以及如何在C++ 中获取QML的内容
【QML 与 C++ 之间的通讯机制】QML 与 Qt 通讯:讲解如何在QML 中使用C++类,以及如何在C++ 中获取QML的内容
2019 1
|
算法 C++ UED
QML布局:如何恰当设置间隙与合理布局 (QML Layout: Proper Spacing and Alignment)
QML布局:如何恰当设置间隙与合理布局 (QML Layout: Proper Spacing and Alignment)
2641 0
|
算法 C++ 开发者
【QML文件结构】理解QML中 多层嵌套控件之间的关系
【QML文件结构】理解QML中 多层嵌套控件之间的关系
1192 2