具有属性的 QML StackView 推送组件
QML StackView push component with properties
在 QML StackView docs 中提到您可以使用如下属性推送 item
:
stackView.push({item: someItem, properties: {fgcolor: "red", bgcolor: "blue"}})
有没有一种方法可以让我们使用属性推送component
?我的组件基本上是其他 .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 文件中,我在按钮的一个 onClick 方法上尝试此操作:
onClicked: {
appWindow.stackv.push({item: appWindow.loginComponent})
}
我弹出这个错误:
QML StackView: push: nothing to push
如果我在没有 item
属性 的情况下尝试这样做,它会起作用。但是,无论哪种方式,我都无法推送属性。
在documentation you linked to中,第一句说:
An item pushed onto the StackView can be either an Item, a URL, a string containing a URL, or a Component.
所以只传递一个组件:
stackView.push({item: loginComponent, properties: {/*...*/}})
编辑:事实证明,在您编辑问题并添加警告输出后,您实际上是在使用 Qt Quick Controls 2 中的 StackView,而不是您的文档 link 指出的 Qt Quick Controls 1到.
- QML StackView::push()(Qt 快速控件 2)
stackView.push(loginComponent, {/*...*/})
在 QML StackView docs 中提到您可以使用如下属性推送 item
:
stackView.push({item: someItem, properties: {fgcolor: "red", bgcolor: "blue"}})
有没有一种方法可以让我们使用属性推送component
?我的组件基本上是其他 .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 文件中,我在按钮的一个 onClick 方法上尝试此操作:
onClicked: {
appWindow.stackv.push({item: appWindow.loginComponent})
}
我弹出这个错误:
QML StackView: push: nothing to push
如果我在没有 item
属性 的情况下尝试这样做,它会起作用。但是,无论哪种方式,我都无法推送属性。
在documentation you linked to中,第一句说:
An item pushed onto the StackView can be either an Item, a URL, a string containing a URL, or a Component.
所以只传递一个组件:
stackView.push({item: loginComponent, properties: {/*...*/}})
编辑:事实证明,在您编辑问题并添加警告输出后,您实际上是在使用 Qt Quick Controls 2 中的 StackView,而不是您的文档 link 指出的 Qt Quick Controls 1到.
- QML StackView::push()(Qt 快速控件 2)
stackView.push(loginComponent, {/*...*/})