您的位置:首页 > 编程语言 > Qt开发

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()这个函数的调用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: