您的位置:首页 > 运维架构 > Linux

Linux学习笔记(八十四)——Qt中的close和closeEvent

2011-05-12 16:43 555 查看
Posted on 2009年09月28日 by huanhaoadam

对于一个QDialog类的对话框可以用reject()和accept()来控制关闭时的行为。对于QMainWindow而言则可以通过close()信号和closeEvent(QCloseEvent *)函数。当然,这两个都是从QWidget那里继承过来的,所以严格说来只要是Qt控件就都能用,但应该还是对主窗口应用比较多吧。
每当点击窗口上方的关闭按钮,就会引发窗口的bool close()响应,如果窗口被关闭返回true,否则返回false。如果没有重载,close()会调用void closeEvent(QCloseEvent *)函数,缺省关闭窗口并返回true;作为protected的成员,这个函数同样可以重载。比如
void [MainWindow Name]::closeEvent(QCloseEvent *event)
{
int r=QMessageBox:question(this,tr("Last Hint"),tr("Are you sure you want to quit?"),QMessageBox::Yes|QMessageBox::Default,QMessageBox::No|QMessageBox::Escape);
if (r==QMessageBox::Yes)
event->accept();
else
event->ignore();
}
其中accept就是让这个关闭事件通过并顺利关闭窗口,ignore就是将其忽略回到窗口本身。这里可千万得注意在每一种可能性下都对event进行处理,以免遗漏。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: