Qt: QMenu在删除主窗口后似乎没有被删除
Qt: QMenu seems to not be deleted after deleting MainWindow
在MainWindow的构造函数中,我有一段代码:
QMenu * filemenu = this->menuBar()->addMenu(tr("File"));
QAction * openButton = new QAction(tr("Open"), this);
connect(openButton, SIGNAL(triggered()), this, SLOT(input()));
filemenu->addAction(openButton);
一切似乎都很好,直到我运行内存检查。Valgrind似乎在说这里存在内存泄漏。QMenu不应该在主窗口被删除之前被自动删除吗?我试着记住指向文件菜单的指针,并在主窗口析构函数中手动删除它,但它没有改变任何东西。有人知道我哪里做错了吗?
应该在主窗口被删除之前自动删除QMenu吗?
您可以将插槽连接到QMenu实例(filemenu)的destroyed()信号,并使用qDebug()在那里打印一些东西。如果在主窗口析构函数被打印出来,则意味着析构函数被调用,即被删除。
...
connect(myMenuPointer, SIGNAL(destroyed()), receiverPointer, SLOT(test()));
...
MyClass::test()
{
qDebug() << "My menu deleted automatically";
}
有时,在Qt应用程序中,如果下面的东西泄漏内存,如glibc等,valgrind会检测到内存泄漏。可能是这样,但是你的问题的答案是QMenu将被自动删除。
相关文章:
- 如何完全删除窗口的非工作区?
- 如何从 CLion 的运行窗口中删除程序项目路径
- 删除父/子窗口层次结构的最佳方法
- 如何从窗口中删除 TOPMOST 属性
- 替代QDockWidget的小部件,而没有删除以前的窗口
- 尝试使用窗口注册表中的路径和 DeleteFile() 方法删除.exe文件
- 先前在MFC中删除窗口
- QT调整窗口大小后,删除窗口后
- 事件在发布到Qt中的窗口时从队列中删除
- Qt 删除窗口小部件
- 如何枚举和删除窗口事件
- 如何永久删除主窗口标题栏
- 如何删除窗口
- 删除窗口中正在运行的文件
- ncurses:是否可以在不删除边框的情况下刷新窗口
- Qt QMainWindow中央窗口小部件删除
- 在QT关闭时从子窗口句柄中删除内存
- 如何删除Qt窗口的所有子窗口
- 从使用glfw创建的窗口中删除最大化按钮
- 应该重新绘制B样条曲线,而不删除窗口的所有其余部分