QML编码约定: QML Coding Conventions
1. QML对象
QML对象一般使用下面的顺序进行构造:
a. id
b. 属性声明
c. 信号声明
d. JavaScript函数
e. 对象属性
f. 状态
g. 状态切换
2. 分组属性
如果使用了一组属性中的多个属性,那么使用组表示法,而不要使用点表示法,这样可提高可读性
Rectangle {
anchors.left: parent.left; anchors.right: parent.right
//可写成
anchors {
top: parent.top; bottom: parent.bottom
}
}
3. 私有属性
QML和JavaScript中并没有C++中那样强制私有属性。例如这些属性实施的一部分时,这里需要隐藏哪些私有属性。惯例,私有属性使用两个下滑先开头。例如,__area是一个可以被访问但是并不作为公有使用的属性:
Item {
id: component
width: 40; height: 50
property real __area: width * height * 0.5 //并不作为外部使用
}
4. 列表
如果一个列表只包含一个元素,那么通常忽略方括号。
states: [
State {
name: "open"
PropertyChanges {target: container; width: 200}
}
]
//可以写成
states: State {
name: "open"
PropertyChanges {target: container; width: 200}
}
5. JavaScript代码
如果脚本是一个单独的表达式(如,width: parent.width / 2),建议将它写成内联;
如果脚本只有几行,写成块;
如果脚本有很多行,或者需要被不同的对象使用,创建一个函数。调用:width: calulateWidth(parent)
如果是很长的脚本,可以将这个函数放在独立的JavaScript文件中,然后导入使用:
import "myscript.js" as Script
Rectangle {color: "blue"; width: Script.calculateWidth(parent)}