在 Qt 中,在构造 QObject 时会分配父级。将 parent 设置为 0 会构造一个没有父对象的对象。如果对象是一个小部件,它将成为一个顶级窗口。如果我在堆上创建一个顶级窗口,是否需要显式删除顶级窗口以避免内存泄漏?或者 Qt 会处理它。如果是这样,Qt什么时候删除它?在关闭小部件或关闭应用程序时?
最佳答案
据我了解,现有的两个答案都是错误的。
当 QApplication 被销毁时,顶层小部件全部被删除。
在顶级窗口关闭之前QApplication确实不会从事件循环中返回,但这与问题无关。
只要您的 QApplication 被正确销毁(即在堆栈上创建或以其他方式删除),所有小部件都将被删除。
您不必删除顶级小部件,并且不这样做不会导致技术或其他方面的泄漏。
(这不是顶级QObjects的情况,只有QWidgets,由QApplication跟踪)
关于qt - 我是否需要显式删除顶级窗口以避免 Qt 中的内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22939872/