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进行处理,以免遗漏。
对于一个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进行处理,以免遗漏。
相关文章推荐
- Linux学习笔记(八十四)——Qt中的close和closeEvent
- Qt中的close和closeEvent
- Qt中close和closeEvent
- 无法关闭的QT程序(覆盖closeEvent,新建QProcess并脱离关系)
- 关于qt在linux下使用open,write,close等文件操作的笔记
- QWidget 的 close 与 Qt::WA_DeleteOnClose
- Qt 之 show,hide,setVisible,setHidden,close 等小结
- Qt按ESC关闭模态对话框不触发closeEvent()问题解析
- qt 的close和系统的close冲突。close(),close(fd)
- QT中关闭应用程序和窗口的函数(quit(),exit()以及close()的区别)
- Qt之show()、hide()、close()、exec()、open()比较
- Qt 之 show,hide,setVisible,setHidden,close 等小结
- Qt 之 show,hide,setVisible,setHidden,close 等小结 .
- centos7 Qt5.9.1 undefined reference to symbol 'dlclose@@GLIBC_2.2.5'
- 拦截QT关闭窗口的CloseEvent
- Qt13 Creating connection open and close function with sqlite database
- Qt学习 重写closeEvent退出对话框
- QT对话框去掉帮助和关闭按钮 拦截QT关闭窗口的CloseEvent
- 拦截QT关闭窗口的CloseEvent
- linux mint Sarah下安装Qt5.7.0 解决无法解析res_nclose中符号“res_nclose"