QT中关闭子窗口而不关闭父窗口
2013-05-12 21:57
1921 查看
应用程序中只有唯一一个QDialog,如果点击它上面的关闭按钮,或者调用了reject(),accept()方法,那么QApplication的事件循环就会结束,让整个应用程序退出。
但是有时候,例如一个程序,没有界面,只有右下角的任务栏上有一个图标,右击图标弹出菜单,可以进行设置。如设置参数时,会创建一个QDialog窗口,设置完成后,这个窗口被关闭,这时整个程序就会退出了。为了解决这一问题。可以重写closeEvent()函数,如下:
void SetupDialog::closeEvent(QCloseEvent *e) {
e->ignore();
reject();
}
这样,如果有确定按钮或者取消按钮时,他们相对应的slot中调用close()方法去关闭窗口,至于在closeEvent函数中使用reject()还是accpet()函数,使用自己设定的一个标志来判断就可以了,关键在于()e->ignore()这个函数的调用。
但是有时候,例如一个程序,没有界面,只有右下角的任务栏上有一个图标,右击图标弹出菜单,可以进行设置。如设置参数时,会创建一个QDialog窗口,设置完成后,这个窗口被关闭,这时整个程序就会退出了。为了解决这一问题。可以重写closeEvent()函数,如下:
void SetupDialog::closeEvent(QCloseEvent *e) {
e->ignore();
reject();
}
这样,如果有确定按钮或者取消按钮时,他们相对应的slot中调用close()方法去关闭窗口,至于在closeEvent函数中使用reject()还是accpet()函数,使用自己设定的一个标志来判断就可以了,关键在于()e->ignore()这个函数的调用。
相关文章推荐
- Qt 关闭窗口时循环依旧运行的解决办法
- QT 窗口关闭 程序进程不退出
- 拦截QT关闭窗口的CloseEvent()
- QT窗口去掉最大化最小化关闭按钮
- Qt中关闭窗口命令
- 使用Qt编辑关闭窗口程序的一些见解
- Android 下Qt 多层窗口关闭时程序退出的问题 解决
- Qt窗口-仅显示关闭按钮
- qt窗口关闭但不退出进程, 有两个方法
- Qt 后台进程开发 子窗口关闭后 主程序退出
- 用QT编写的程序,怎样在申请资源失败后,关闭所有窗口,退出程序?
- Qt中使用QGLview组件启动应用程序窗口自动关闭
- 使用Qt编辑关闭窗口程序的一些见解
- Qt5窗口关闭与窗口销毁
- Qt捕捉窗口关闭事件与信号的捕捉
- 让Qt的窗口最小化最大化及关闭按钮都消失
- QT在构造函数中关闭窗口
- QT窗口最大,最小,关闭按钮使不能
- 拦截QT关闭窗口的CloseEvent
- QT中使用槽函数来关闭窗口,导致内存泄露的问题以及解决办法