我不确定正确使用StackView
。
我有几个QML对象,我展示它们替换StackView
中的currentItem。这是一种不使用两个Loaders
进行转换的简单方法。
类似的东西:
import QtQuick 2.5
import QtQuick.Controls 1.4
StackView {
id: stack
anchors.fill: parent
initialItem: initObj
}
Component {
id: initObj
ModuleHome {}
}
Component {
id: obj1
Module1 {}
}
// ...
stack.push({item: item, replace: true, destroyOnPop: true})
碰巧我在一个页面上有一个错误,我注意到调试控制台中的错误消息重复了我推动对象的次数。
即。 第一次:
qrc:/MyObject.qml:15:TypeError:无法写入null
的属性
第二次:
qrc:/MyObject.qml:15:TypeError:无法写入null
的属性qrc:/MyObject.qml:15:TypeError:无法写入null
的属性
第三次:
qrc:/MyObject.qml:15:TypeError:无法写入null
的属性qrc:/MyObject.qml:15:TypeError:无法写入null
的属性qrc:/MyObject.qml:15:TypeError:无法写入null
的属性
我想知道replace
方法中的push
标志是否确实pop
(并因此销毁)对象和所有包含的对象。
答案 0 :(得分:1)
http://doc.qt.io/qt-5/qml-qtquick-controls-stackview.html
StackView中有三个主要的导航操作:push(),pop()和replace(通过指定参数replace替换为push()来替换)。这些对应于经典的堆栈操作,其中" push"将一个项目添加到堆栈的顶部," pop"从堆栈中删除顶部项目,"替换"就像一个pop然后按,因为它用一个新项替换堆栈中最顶层的项
我认为你的问题可能与此有关:
QML StackView: Item Destroyed on pop
(使用Item而不是Component)