使得QDialog关闭的时候不自动退出

使得QDialog关闭的时候不自动退出
giscn[at]msn[dot]com

适用情况:当主窗口hide在后台,这时在trayIcon上打开一个about窗口,关闭此about
窗口,将自动退出整个程序。
原因:Qt 4.0.1自动将lastWindowClosed与quit()相连。而这时主窗口被隐藏,在关闭
about窗口时,因为检测到about窗口有WA_QuitOnClose属性,在about关闭后,继续检
测有无visible的带WA_QuitOnClose属性的窗口(lastWindowClosed),因为检测到没
有,所以激发quit(),从而退出。
solution: 在about dialog的合适位置(一般是constructor)加入
setAttribute(Qt::WA_QuitOnClose, false); 清除WA_QuitOnClose标志。这样在关闭
about时,不会继续检测lastWindowClosed,从而不激发quit。

1 thought on “使得QDialog关闭的时候不自动退出

  1. Unknown

    朵朵,您好: 关于您的文章 " 使得QDialog关闭的时候不自动退出 " ,如果我坚持在主视窗未出现时,使用Qt内建的QMessageBox询问使用者一些问题,但是当我回答完QMessageBox的问题后,程式也会自动关闭,原因可能如您文章所述的一样!这样的情形中,我该如何决定呢?

    Reply

Leave a Reply to Unknown Cancel reply

Your email address will not be published. Required fields are marked *