我有這樣的 BasePage.qml:
Item {
property alias content: loader.sourceComponent
signal topBarLeftButtonClicked()
TopBar {
...
}
Loader {
id: loader
}
BottomBar {
...
}
}
這樣我可以動態地改變頁面的內容,但是我必須使用組件,并且我無法讀取 DerivedPage 中內容的屬性。
例如:
派生頁面.qml
BasePage {
onTopBarLeftIconClicked: item.text //error, item is not defined
content: Component {
TextField {
id: item
}
}
}
有什么解決辦法嗎?
uj5u.com熱心網友回復:
您可以為Loader'sitem內部的屬性定義別名BasePage,如下所示:
property alias contentItem: loader.item
并參考它而不是 contentitem內DerivedPage。
把它們放在一起:
// BasePage.qml
Item {
property alias content: loader.sourceComponent
property alias contentItem: loader.item
signal topBarLeftButtonClicked()
Loader { id: loader }
}
// DerivedPage.qml
BasePage {
onTopBarLeftIconClicked: { contentItem.text = "clicked" }
content: Component { TextField { } }
}
uj5u.com熱心網友回復:
我找到了一種替換加載器和組件的方法:
//BasePage.qml
Item {
default property alias data: item.data
signal topBarLeftButtonClicked()
TopBar {
...
}
Item{
id: item
}
BottomBar {
...
}
}
//DerivedPage.qml
BasePage {
onTopBarLeftIconClicked: textField.text = "string"
TextField {
anchors.fill: parent
id: textField
}
}
這種方式 textField 替換 BasePage.qml 中的專案
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/409779.html
標籤:
上一篇:PythonGoogleSearch模塊錯誤:“TypeError:search()gotanunexpectedkeywordargument'tld'”
下一篇:類似系統的QT普通命令執行
