每個人都知道如何通過這些元素的背景屬性為按鈕、彈出視窗等設定背景。但我想知道,如何為自己的自定義元素創建這樣的屬性?我找到了一種方法,但它看起來很丑陋,而且我似乎無法找到定義所述屬性的 Button、Popup 等的 qml 代碼。所以我玩了一下,想出了像這樣使用系結的想法:
Item {
id: root
property Item background: Rectangle {
color: "red"
}
Binding {
target: root.background
property: "parent"
value: root
}
Binding {
target: root.background
property: "anchors.fill"
value: root
when: root.background.parent == root
delayed: true
}
}
如前所述,如果您需要宣告孩子的很多屬性,那看起來很煩人。那么,Qt 是如何做到的,或者正確的做法是什么?
uj5u.com熱心網友回復:
// ItemWithBackground.qml
Item {
property alias background: backgroundLoader.sourceComponent
Loader {
id: backgroundLoader
anchors { fill: parent }
sourceComponent: Rectangle { color: 'red' } // default background implementation
}
}
// Usage example:
ItemWithBackground {
background: Rectangle {
color: 'green'
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/313867.html
