今天我在程序中遇到了一些奇怪的错误。继承自QObject
的类的对象被类型为QEvent::DefferedDelete
的事件删除,而没有人可能发送它。
它作为QVariant传递给QML:
// cpp:
Q_INVOKABLE QVariant currentDevice_v() const {
return QVariant::fromValue(_current);
}
// qml:
Component.onCompleted: {
curDevice = devicesModel.currentDevice_v()
#...
}
没有那个qml行,一切都运行良好 - 没有任何东西产生删除事件。
答案 0 :(得分:2)
我已经发现,如果我在将QObject
的父级传递给QML之前设置它的父级,那么它就不会被删除。因此,我已经得出结论,将未经授权的QObject传递到QML范围会使该范围成为QObject
的父级,并在范围结束后调用其析构函数。
分享这个,因为我还没有在任何地方找到答案。但在撰写这篇文章时,我发现了类似的未回答的问题:Qt5.6 QML, why are dynamic models destroyed after garbage collection?