QtQuick.Controls 2 StackView和destroyOnPop

时间:2016-08-21 10:33:41

标签: qt qml qtquickcontrols2

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

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

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

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

1 个答案:

答案 0 :(得分:3)

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

如果您需要访问创建的实例,您只需处理返回值:

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