我有一个继承QAbstractListModel
的类。它的实例(使用new
运算符动态创建)在qml中使用setContextProperty()
注册。在Qml中,它与GridLayout
和Repeater
一起使用。
问题出现了,当我关闭我的程序时:我使用以下代码从qml执行:
quitButton{
onClicked: {
application.close();
Qt.quit()
}
}
程序崩溃
delete(instanceOfModelClass);
有访问权限违规。我尝试为这个实例设置QObject的父级,为引擎中的这个对象设置QQmlEngine :: CppOwnership,但它仍然无法正常工作。
我如何解决这个问题?
P.S。如果我删除了删除(instanceOfModelClass);它会起作用,但是,正如我所理解的那样,会有模因泄漏。
答案 0 :(得分:0)
问题解决了,当QObjects父母被设置时。并按正确的顺序删除电话。
答案 1 :(得分:-1)
我认为你的程序崩溃了,因为之前已经在其他地方删除了指针。在删除之前尝试检查指针是否仍然存在,你可以这样做:
if (myPointer != nullptr) delete myPointer;
另一个替代方法是使用QScopedPointer,当它超出范围时会自动删除指针。我想你在main函数中创建了指针,所以就像这样:
QScopedPointer<MyClass> scp(new MyClass()); // no need to set a parent
MyClass* myClassPtr = scp.data(); // use this one to pass it to the qml context.