首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从主窗口关闭QDialog

从主窗口关闭QDialog
EN

Stack Overflow用户
提问于 2016-05-27 15:02:29
回答 1查看 1.2K关注 0票数 0

我有一个主窗口,当我按一个按钮时,它会创建一个QDialog(它的名字是qds)。当我关闭主窗口时,我希望QDialog也关闭。但是,当我关闭主窗口时,QDialog仍然是打开的,应用程序仍然在运行。这是主窗口的析构函数:

代码语言:javascript
运行
复制
MainWindow::~MainWindow(){
    if(qds) delete qds; // this is the QDialog
    // ...other code
}

量子点不是主窗口的孩子。我试着把

代码语言:javascript
运行
复制
setAttribute(Qt::WA_DeleteOnClose);

在主窗口的构造函数中,但是它生成分段faul(双空闲)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-27 18:21:22

启动非模态对话框,指针位于主窗口对象中.它可以防止应用程序在关闭主窗口时退出。怎么解决这个问题?

应用程序事件循环中不应该有更多的对象“旋转”,这解决了这个问题。我将所有没有其他小部件的小部件称为'this‘指针,通过构造函数传递。但我们还是能追踪到他们。我使用“分离”小部件列表,但只有一个“分离”对话框,类成员变量指针就足够了。

代码语言:javascript
运行
复制
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);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37486713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档