QT中关闭子窗口而不关闭父窗口

应用程序中只有唯一一个QDialog,如果点击它上面的关闭按钮,或者调用了reject(),accept()方法,那么QApplication的事件循环就会结束,让整个应用程序退出。
但是有时候,例如一个程序,没有界面,只有右下角的任务栏上有一个图标,右击图标弹出菜单,可以进行设置。如设置参数时,会创建一个QDialog窗口,设置完成后,这个窗口被关闭,这时整个程序就会退出了。为了解决这一问题。可以重写closeEvent()函数,如下:
void SetupDialog::closeEvent(QCloseEvent *e) {
    e->ignore();
    reject();
}
这样,如果有确定按钮或者取消按钮时,他们相对应的slot中调用close()方法去关闭窗口,至于在closeEvent函数中使用reject()还是accpet()函数,使用自己设定的一个标志来判断就可以了,关键在于()e->ignore()这个函数的调用。
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值