Qt中窗口退出事件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Qt中窗⼝退出事件
窗⼝右上⾓的X按键会导致其在不给出任何提⽰的情况下直接退出,
当点击右上⾓的x按键时,会触发Qt中的⼀个事件处理函数:void QWidget::closeEvent ( QCloseEvent * e ),默认情况该函数⽆任何提⽰性消息,如果需提⽰则需要重写该函数
void Dialog::closeEvent ( QCloseEvent * e )
{
if( QMessageBox::question(this,
tr("Quit"),
tr("Are you sure to quit this application?"),
QMessageBox::Yes, QMessageBox::No )
== QMessageBox::Yes){
e->accept();//不会将事件传递给组件的⽗组件
qDebug()<<"ok";
}
else
e->ignore();
}
说明:
事件的ignore函数表⽰忽略事件,将其传到⽗组件进⾏处理
事件的accept函数表⽰接受事件,组件⾃⼰进⾏处理,不会将事件传递给⽗组件
但是在这个closeEvent函数中,这两个函数尤其不⼀样的理解:对于窗⼝关闭QCloseEvent事件,
调⽤accept()意味着 Qt 会停⽌事件的传播,窗⼝关闭;
调⽤ignore()则意味着事件继续传播,即阻⽌窗⼝关闭。
此外如果需要直接退出某个应⽤程序,可以直接调⽤Qt中的⼀个全局指针:qApp ,全局指针qApp指向全局的QApplication对象。
在需要停⽌程序运⾏的位置直接加⼊如下代码
#include <QtGui/QApplication>
...
qApp->quit();
说明:
qApp是⼀个全局的函数,可以在Qt说明⽂档中直接找到,不是main函数定义的QApplication对象(QApplication对象也可以退出,使⽤ app->exit(0);或者 app->quit();具体可以参考【1】)
qApp->quit()关闭的是整个应⽤程序,不只是窗⼝,
⼀般情况下关闭窗⼝应⽤程序会直接退出,如果要求关闭窗⼝时,应⽤程序不退出,则需要设置QApplication的属性:
QApplication::setQuitOnLastWindowClosed(false);