在QML StackView docs中,提到您可以使用以下属性推送 item
:stackView.push({item: someItem, properties: {fgcolor: "red", bgcolor: "blue"}})
有没有办法我们可以 push component with properties ?我的组件基本上是我的应用程序的不同视图的其他 .qml
文件的包装器,例如:
Component{
id: loginComponent
Login{}//The Login.qml file of my project
}
这就是我正在尝试的:
Main.qml
ApplicationWindow {
id: appWindow
visible: true
width: Screen.desktopAvailableWidth
height: Screen.desktopAvailableHeight
property alias stackv: stackv
property alias loginComponent: loginCom
StackView {
id: stackv
anchors.top: topHeader.bottom
anchors.topMargin: 10
anchors.bottom: parent.bottom
width: parent.width
focus: true
Component {
id: loginCom
Login {
anchors.fill: parent
}
}
}
}
在另一个QML文件中,它作为组件被推送到stackview,我正在尝试使用按钮的onClick方法之一:
onClicked: {
appWindow.stackv.push({item: appWindow.loginComponent})
}
我遇到这个错误:
QML StackView:推送:无需推送
如果我尝试没有 item
属性,它可以工作 . 但是,无论哪种方式,我都无法推动属性 .
1 回答
在documentation you linked to中,第一句话说:
所以只需传递一个组件:
编辑:事实证明,在您编辑问题并添加警告输出后,您实际上正在使用Qt Quick Controls 2中的StackView,而不是来自文档链接所指向的Qt Quick Controls 1 .
QML StackView::push()(Qt Quick Controls 2)
stackView.push(loginComponent, {/*...*/})