如何使用QML StackView的status属性?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用QML StackView的status属性?相关的知识,希望对你有一定的参考价值。
我在StackView QML类型中有一些3个组件,我可以使用push()
和pop()
更改视图。再往下,我想在将push()或pop()推送到该UI时,根据用户配置更新UI(组件)。通过文档,我发现Stack.status
在这种情况下很有趣,但不知道如何使用它。
谁能举一些关于它的例子?
下面是我将屏幕加载到堆栈视图并导航的代码:
StackView {
id: stackView
visible: false
// rotation: 180
anchors.fill: parent
initialItem: componentHome
Component.onCompleted:
{
}
}
Component
{
id: componentHome
Home
{
//This is how I traverse the screens
onMenuClicked:
{
console.log("opening "+name+" screen")
if(name === "settings")
{
//Here, for eg. how to update UI in Settings screen before pushing it?
stackView.push(componentSettings)
}
}
}
}
Component
{
id: componentSettings
Settings
{
}
}
Component
{
id: componentPlay
Play
{
}
}
答案
我会用以下方式做到这一点:
import QtQuick.Controls 2.1
StackView {
id: stack
anchors.fill: parent
initialItem: page1
}
Button {
text: "add page"
onClicked: {
var page = stack.push(page2, {color: "red"});
//page.color = "red"; // - that also should work
}
}
Component {
id: page1
Rectangle {
color: "black"
}
}
Component {
id: page2
Rectangle {
color: "black"
}
}
另一答案
将StackView.onStatusChanged:
用于组件应该可以帮助你,但要小心 - 你无法定义组件弹出或StackView.status将其他组件推到它上面(至少是大约一年前,我无法检查它是如何正确的现在)。您可以在my old question的小型讨论中找到一些细节
以上是关于如何使用QML StackView的status属性?的主要内容,如果未能解决你的问题,请参考以下文章
QML StackView:动态更改replaceEnter/Exit动画
QML:在 StackView 中,水平可滑动的视觉效果会持续存在