我是靠谱客的博主 繁荣项链,最近开发中收集的这篇文章主要介绍QML学习(三)对象属性,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

http://doc.qt.io/qt-5/qtqml-syntax-objectattributes.html

QML对象属性主要有以下几个方面


the id attribute
//每一个对象都有一个id属性,这个id可以调用该对象的属性,必须独一无二
property attributes
//一个属性能够呗赋予一个静态值或者动态语句
signal attributes
signal handler attributes
method attributes
attached properties and attached signal handler attributes
enumeration attributes

id属性对于每一个对象来说都是独一无二的,并且可以在对象外通过这个id引用其对象的其它属性

Property属性是可以自己定义的,并且可以赋给static value或者dynamic expression,注意propertyName必须以小写的字母开始,并且只能含有字母,数字或者下划线

[default] property <propertyType> <propertyName>//Property的定义方式

还可以为Property属性绑定信号和信号处理函数

Rectangle {
property color previousColor
property color nextColor
onNextColorChanged: console.log("The next color will be: " + nextColor.toString())
}

所有的 Basic Types都可以作为property type,这里面有个很厉害的type就是var,它几乎可以代替所有的类型

property var someNumber: 1.5
property var someString: "abc"
property var someBool: true
property var someList: [1, 2, "three", "four"]
property var someObject: Rectangle { width: 100; height: 100; color: "red" }

Signal 属性是用来通知对象一些event发生了,比如属性变化,动画开始或者结束,以及一个image的下载。一个信号处理函数的声明语法为

on<Signal> //Signal是信号名,第一个字母必须大写

也可以自己定义Signal属性

signal <signalName>[([<type> <parameter name>[, ...]])]
import QtQuick 2.0
Item {
signal clicked
signal hovered()//如果属性没有参数,"()"可有可无
signal actionPerformed(string action, var actionResult)
}

Signal Handler 属性是一种特殊的method attribute,只要QML的signal emit之后,这个handler就会被调用

// SquareButton.qml
Rectangle {
id: root
signal activated(real xPosition, real yPosition)
signal deactivated
property int side: 100
width: side; height: side
MouseArea {
anchors.fill: parent
onPressed: root.activated(mouse.x, mouse.y)
onReleased: root.deactivated()
}
}

Methods属性可以被event激发,它的定义语句为

function <functionName>([<parameterName>[, ...]]) { <body> }

它的使用方法

import QtQuick 2.0
Item {
width: 200; height: 200
MouseArea {
anchors.fill: parent
onClicked: label.moveTo(mouse.x, mouse.y)
}
Text {
id: label
function moveTo(newX, newY) {
label.x = newX;
label.y = newY;
}
text: "Move me!"
}
}

附加属性和附件信号处理函数是为object连接一些额外的属性所设计的,实现语句为

<AttachingType>.<propertyName>
<AttachingType>.on<SignalName>

枚举属性暂时没有看出来有什么特别之处,就是一个属性被定义为集中可取值

最后

以上就是繁荣项链为你收集整理的QML学习(三)对象属性的全部内容,希望文章能够帮你解决QML学习(三)对象属性所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部