QtQuick.Controls 2 StackView 和 destroyOnPop

QtQuick.Controls 2 StackView and destroyOnPop

我的应用程序使用 StackView 并将大量动态创建的对象推送到此 StackView 中,当它们从 StackView 中弹出时,我需要一些方法来销毁此对象。如果我使用 Controls 1 Stackview,我可以使用 destroyOnPop 属性 推送对象(就像 中显示的那样):

tablesStack.push({item: view, destroyOnPop: true})

但不适用于 Controls 2 StackView。这个问题的正确解决方案是什么?

我只知道一种方法:弹出时延迟调用 object.destroy(),但这种方法看起来很笨拙。如果它很重要,我可以将任何代码添加到动态生成的对象中

控件 2 StackView 简化了所有权语义。 StackView 获得它动态实例化的任何项目的所有权。如果您已经创建了实例,那么您就可以控制该实例。换句话说,如果您希望 StackView 销毁,请推送 Component 或 URL,然后让 StackView 创建实例。

如果你需要访问创建的实例,你可以简单地处理return值:

var view = stackView.push(component, {"foo": 1, "bar": 2})
view.doSomething()