在Qt5中为了很好的将qml嵌入QWidget中,引入了QQuickWidget,使用起来比较方便。
但我在使用过程中,发现了一个问题,如果定义了一个QQuickWidget指针做类的成员变量加载qml,这样在程序退出时程序会崩溃,这个问题虽然不影响程序的使用,但毕竟是个bug,也困扰了我好久。后经不断实验,找到了问题处。
这个问题是在程序退出时,析构引起的,具体问题出在QQuickWidget上;解决办法就是在析构时需要手动delete QQuickWidget指针。这时候我又发现了另外一个问题,我在程序中使用了StringListModel,所以需要用到 rootContext,他作为类成员时在析构时是不能delete的,如果delete了,也会造成程序退出崩溃。
当然,作为小菜鸟的我并不能看透这里面的门道,也就无从得知QQuickWidget析构时为什么需要注意这些,所以我也只是用最笨的办法试出了解决办法。欢迎各路大神进行指导这里面的工作原理以及门道!
对于其他类似于Qt内存管理造成的程序退出崩溃,我就不班门弄斧了,毕竟网上的很多大神已经叙述过了这方面的问题。