- 基本用法:
// MyButton.qmlRectangle {id: rootproperty alias buttonText: label.text // 將內部 Text 元件的 text 屬性暴露出來property alias textColor: label.color // 將內部 Text 元件的 color 屬性暴露出來Text {id: labelanchors.centerIn: parenttext: "Button"}}// 使用時MyButton {buttonText: "Click Me" // 可以直接設定內部 Text 的文字textColor: "red" // 可以直接設定內部 Text 的顏色}
- 元件別名:
// CustomItem.qmlItem {id: rootproperty alias content: container // 將整個 Rectangle 元件暴露出來Rectangle {id: containerwidth: 100height: 100}}// 使用時CustomItem {content.color: "blue" // 可以直接訪問和修改內部 Rectangle 的屬性content.width: 200}
- 訊號別名:
// MyInput.qmlRectangle {id: rootproperty alias textInput: inputproperty alias textChanged: input.textChanged // 將內部 TextInput 的訊號暴露出來TextInput {id: inputanchors.centerIn: parent}}// 使用時MyInput {onTextChanged: console.log("文字已改變")}
- 預設屬性別名:
// Container.qmlItem {id: rootdefault property alias content: column.children // 將內部 Column 的 children 設為預設屬性Column {id: column}}// 使用時Container {Text { text: "Item 1" } // 自動新增到內部 Column 中Text { text: "Item 2" }}
- 只讀屬性別名:
// Counter.qmlItem {id: rootproperty int count: 0readonly property alias currentCount: root.count // 建立一個只讀別名function increment() {count++}}
- 封裝性:
- 隱藏內部實現細節
- 提供更清晰的 API
- 允許在不破壞外部介面的情況下修改內部實現
- 靈活性:
- 可以重新命名屬性,使其更符合具體用途
- 可以將深層巢狀的屬性暴露到頂層
- 支援屬性的重定向和組合
- 程式碼複用:
- 便於建立可重用的元件
- 簡化元件的使用方式
- 提高程式碼的可維護性
- 介面設計:
- 可以建立更直觀的元件 API
- 控制屬性的訪問許可權
- 提供更好的開發體驗
- alias 必須在元件的根級別定義
- alias 必須指向一個具體的屬性,不能是表示式
- 一個屬性只能有一個別名