Qt中窗口退出事件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);

相关文档
最新文档