Qt 如何访问加载器对象内项目的属性
我使用qmlQt 如何访问加载器对象内项目的属性,qt,qml,qtquickcontrols2,Qt,Qml,Qtquickcontrols2,我使用qml加载程序组件将页面动态推送到视图中。现在,我推送的页面有各种属性,我想从加载程序组件本身访问它们。但是,我无法为这些属性创建别名。所以,我有这样的想法: Loader { id: loginLoader source: "qrc:/pages/IdPinLoginPage.qml" property alias hasNavBar: loginLoader.item.hasNavBar property alias hasStatusBar: log
加载程序
组件将页面动态推送到视图中。现在,我推送的页面有各种属性,我想从加载程序组件本身访问它们。但是,我无法为这些属性创建别名。所以,我有这样的想法:
Loader {
id: loginLoader
source: "qrc:/pages/IdPinLoginPage.qml"
property alias hasNavBar: loginLoader.item.hasNavBar
property alias hasStatusBar: loginLoader.item.hasStatusBar
}
这将导致
无效的别名目标位置
。如何将这些属性重定向到加载器组件中的父级?我建议您使用加载器的sourceComponent
而不是source
属性,以便轻松地将值分配/绑定到加载的项。此外,对于访问加载的项目,您可以使用加载程序的
项目属性:
Loader {
id: loader
sourceComponent: Component {
SampleItem {
foo: 13 //assign values to loaded item properties
bar: "aleyk!"
}
}
}
Text {
text: loader.item.bar //Access to loaded item properties
}
SampleItem.qml
import QtQuick 2.6
Item {
property int foo: 0
property string bar: "salam";
}
为什么使用别名<代码>属性bool hasNavBar:loginLoader.item!==无效的loginLoader.item.hasNavBar:false(或init值)
应该足够了。我使用了一个别名,因为这些属性值可能在运行时更改,但我想我可以始终使用loginLoader.item。
好吧,使用我的方法不会阻止属性绑定。