qt怎么让esc关闭maninwindow
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt怎么让esc关闭maninwindow相关的知识,希望对你有一定的参考价值。
参考技术A // 首先监听按键事件void MainWindow::keyPressEvent(QKeyEvent *e)
if (Qt::Key_Escape == e->key()
this->close();
本回答被提问者采纳
Qt编程中QDiaog的ESC键(按下Esc键会默认调用reject()方法)
最近使用QDialog时,按了下Esc键,导致QDialog被关闭,而后续的数据处理出现了问题。原来在QDialog中按下Esc键会默认调用reject()方法而不是closeEvent(QCloseEvent*event)或者其他事件。
处理的方法:
(注意:QDialog的close()函数也是会调用reject()函数和关闭函数,若在reject()中直接调用close()也会无法关闭,要先调用hide())
(1)重新实现reject()方法
- void TestDialog::reject()
- {
- //关闭窗口,可以重新执行其他事件
- this->hide(); //或者this->accept()
- this->close();
- }
2、重写keyPressEvent(QKeyEvent *event)
- void TestDialog::keyPressEvent(QKeyEvent *event)
- {
- switch(event->key()) {
- //进行界面退出,重写Esc键,否则重写reject()方法
- case Qt::Key_Escape:
- this->close();
- break;
- default:
- QDialog::keyPressEvent(event);
- }
- }
以上者两种方法都可以解决Esc键触发的问题,当然这只是在QDialog中是这种情况。在QWidget中没有reject ()和accept()槽函数,但可以通过keyPressEvent(QKeyEvent*event)来制定Esc键的功能。
http://blog.csdn.net/taiyang1987912/article/details/48053575
以上是关于qt怎么让esc关闭maninwindow的主要内容,如果未能解决你的问题,请参考以下文章
Qt中,当QWidget不是作为顶级窗体出现时,怎么让他显示关闭按钮呢
如何通过按 ESC 键关闭窗口(NSWindowController)?