将 QML StackView 重置为初始状态

3

我有一个 QML StackView,在应用程序中会将许多组件推送到其中。我想要做的是,在应用程序的某个时候重置 StackView 到其初始状态。 StackView 的定义如下:

StackView {
    id: soemID
    initialItem: myItem
}

随着应用程序运行,有许多东西在被压入和弹出。我想找到一种方便的方法来将这个过程重置为只保留初始项目,但我找不到这样的方法。难道唯一的方法是连续逐个弹出项目,直到只剩下一个项目吗?

1
StackView.clear() 是什么意思? - folibis
2个回答

7
soemID.pop(null) 

应该可以解决问题。 来自StackView文档:

pop(Item item = undefined)

如果item为空,所有项直到(但不包括)第一项将被弹出。如果未指定,则仅弹出当前项....


这比我之前的解决方案更好。 - Luca

4

正如评论中所建议的那样,清空堆栈然后推入初始项就解决了问题。

soemID.clear()
soemID.push(soemID.initialItem)

@luco,真的吗?你试过了吗? - fralbo
@fralbo 这是一段时间之前的事情了,所以我记不清了,但如果我在这里留言,那肯定是起作用了。 - Luca
2
根据我的测试,在 stack.clear() 之后,任何 stack.push() 都会失败并出现未定义的堆栈错误... 因此,解决方案实际上是调用 stack.pop(null) - fralbo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接