我有一个主窗口,当我按一个按钮时,它会创建一个QDialog(它的名字是qds)。当我关闭主窗口时,我希望QDialog也关闭。但是,当我关闭主窗口时,QDialog仍然是打开的,应用程序仍然在运行。这是主窗口的析构函数:
MainWindow::~MainWindow(){
if(qds) delete qds; // this is the QDialog
// ...other code
}量子点不是主窗口的孩子。我试着把
setAttribute(Qt::WA_DeleteOnClose);在主窗口的构造函数中,但是它生成分段faul(双空闲)。
发布于 2016-05-27 18:21:22
启动非模态对话框,指针位于主窗口对象中.它可以防止应用程序在关闭主窗口时退出。怎么解决这个问题?
应用程序事件循环中不应该有更多的对象“旋转”,这解决了这个问题。我将所有没有其他小部件的小部件称为'this‘指针,通过构造函数传递。但我们还是能追踪到他们。我使用“分离”小部件列表,但只有一个“分离”对话框,类成员变量指针就足够了。
void MainWindow::closeEvent(QCloseEvent *event)
{
// TODO: also make sure m_pDetachedNonmodalDlg set to null
// when the dialog closed on its own and deleted: see
// QObject::destroyed() signal for that or make it like
// QPointer<QWidget> m_pDetachedWidget
if (m_pDetachedNonmodalDlg)
m_pDetachedNonmodalDlg->close();
// or event->accept(); but fine 'moments' are there
QMainWindow::closeEvent(event);
}https://stackoverflow.com/questions/37486713
复制相似问题