美文网首页
QML 对象的属性

QML 对象的属性

作者: ENG八戒 | 来源:发表于2019-02-06 14:44 被阅读0次

以下内容为本人的学习笔记,如需要转载,请声明原文链接 [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.0

Column {
    width: 200; height: 200

    TextInput { id: myTextInput; text: "Hello World" }

    Text { text: myTextInput.text }
}

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

一旦对象的实例被创建后,属性 id 的值就不能改动了。其实 id 不是普通的属性,并且具有特殊的语义,比如上面的实例代码中,不可以通过 myTextInput.id 来访问。

「属性」属性

对象的「属性」属性是能被赋静态值或者绑定动态表达式的属性。这个属性值可以被其它对象读取。通常它也可以被其它对象修改,除非这个属性所属的 QML 类型明确禁止。

定义「属性」属性

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

[default] property <propertyType> <propertyName>

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

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


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

相关文章

  • QT - QML对象属性

    QML对象属性 每个QML对象类型都有一组定义的属性。使用为该对象类型定义的属性集创建对象类型的每个实例。可以指定...

  • C++调用QML代码

    C++调用QML实际上就是通过 QML 对象的指针去访问QML对象的属性和方法 只要获取到QML对象的指针,接下来...

  • QML 对象的属性

    以下内容为本人的学习笔记,如需要转载,请声明原文链接 [englyf] https://www.jianshu.c...

  • QWidget 调用 QML 插件中的对象

    目标 为实现从QML字符串中创建QML对象,并显示在基于QWidget项目工程中,且这个QML对象所属类型来自QM...

  • QML Loader 使用注意事项

    QML 的 Loader 元素经常被用来动态加载 QML 组件。可以使用 source 属性或者 sourceCo...

  • Qml 问答

    在Qml 文件中可以访问一个上下文C++实例的属性吗? 可以,但该属性需通过Q_PROPERTY声明 如何在Qml...

  • qml 附加属性

    今天看qml的例子程序,看到一个attached例子,为qml添加附加对象,这个概念有点难于理解:附加对象主要用来...

  • QtQuick/Qml自定义控件(9)-Quick组件管理

    Qml开发中经常需要使用大量的动态创建的对象, 并且需要进行管理. qml可以通过Qt.createCompone...

  • 小白学qml 3

    简单的转换( Simple Transformations) QML元素对象通常能够被平移, 旋转, 缩放。 简单...

  • Record one usage of 'qml signal'

    ArMap.qml ArCanvas.qml

网友评论

      本文标题:QML 对象的属性

      本文链接:https://www.haomeiwen.com/subject/pdfisqtx.html