如何使Esc键最小化对话框?默认情况下关闭。我应该处理KeyEvent
还是有更好的办法?Qt - Esc不应关闭对话框
12
A
回答
12
我想你可以使用这个:
MyDialog::keyPressEvent(QKeyEvent *e) {
if(e->key() != Qt::Key_Escape)
QDialog::keyPressEvent(e);
else {/* minimize */}
}
也看看Events and Event Filters文档。
1
我认为要做到这一点,你基本上必须避免从QDialog
继承。 The documentation for QDialog
说:
Escape键
如果用户在 对话框中按下Esc键,QDialog的::拒绝()将被称为 。这将导致窗口关闭 :关闭事件不能被 忽略。
+0
不错的文档泰勒!为什么不重写,而不是避免继承? – n611x007 2017-01-25 00:55:11
14
Escape calls reject()。我重写这个函数(在我的情况不对话框最小化,而是提示保存)
void MyDialog::reject() {if(cleanupIsOK()) done(0);}
AL_
3
重命名的拒绝是正确的。但要小心,因为如果您想以其他方式关闭对话框,则不能致电关闭。
MyDialog::reject(){
if(some_closing_condition)
{
QDialog::reject() //calls the default close.
}
else
{
//skip reject operation
}
}
相关问题
- 1. 关闭对话框后关闭对话框后按ESC键(仅铬)
- 2. 不要关闭esc或通过点击对话框外部
- 3. 在Android中关闭对话框而不关闭对话框
- 4. Android对话框关闭()不关闭
- 5. jQuery对话框不关闭
- 6. 对话框关闭不primefaces
- 7. Qt:关闭模式对话框关闭程序
- 8. 在ESC按键,关闭自定义对话框与jQuery
- 9. 单击primefaces中的ESCAPE(ESC)时关闭所有对话框
- 10. jQuery UI对话框不关闭内部应用程序关闭
- 11. 我无法在关闭对话框中关闭对话框
- 12. 关闭对话框,关闭其主对话框
- 13. 当显示为独立对话框时,CPropertyPage派生的对话框不会在Esc上关闭
- 14. Jquery对话框关闭按钮不关闭;对话框只能打开一次
- 15. 点击应用上QtQuick对话框按钮关闭对话框
- 16. 关闭jQuery Datepicker关闭jQuery对话框
- 17. 对话框应该自动关闭吗?
- 18. bootstrap对话框esc键不工作
- 19. 关闭jQuery对话框
- 20. jQuery的对话框关闭
- 21. Selenium:关闭对话框
- 22. 关闭搜索对话框
- 23. 对话框关闭两次
- 24. C#CancelButton关闭对话框?
- 25. jQuery post对话框关闭
- 26. 对话框没有关闭
- 27. 关闭jQuery对话框
- 28. 如何关闭对话框
- 29. WPF对话框关闭
- 30. 关闭jQueryUI的对话框
您可能想在if-else语句中正确的对立。 – Narek 2010-06-27 16:30:06
嗯,我认为这是正确的:如果(不是退出){/ *忽略* /} ELSE {/ * hide * /} – mosg 2010-06-28 05:43:02
请将您的代码更改为以下内容,以便我可以接受您的答案。谢谢! void MyDialog :: keyPressEvent(QKeyEvent * e){if(e-> key()!= Qt :: Key_Escape)QDialog :: keyPressEvent(e);其他/ *最小化* /} – Narek 2010-07-04 05:02:22