我有一些遗留代码已经在较旧的Qt版本上运行,其中QList仍然在指针上具有自动删除功能(至少这是代码内注释所说的)。因此GUI传递了指向数据对象的指针,将它们存储在一些Qt容器中,当sth(用户或内部信号)触发Qt事件以删除其中一个数据对象时,它负责适当地删除它们。使用自动删除功能,这似乎运行顺利,但现在它已经消失,我在Qt5下遇到了内存问题。
似乎我不得不将删除与Qt消息循环同步,因为它每次都是从插槽内触发的。如果我只是自己删除它,程序将在某些时候崩溃,因为挂起的Qt事件尝试访问已删除的数据。 我认为deleteLater已经完成了这个技巧,但是有问题的对象是从QTableWidgetItem派生的,因此不拥有deleteLater插槽。