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)}