如何使 Esc 键最小化对话框?默认情况下它会关闭。我应该处理KeyEvent
还是有更好的方式?
答案 0 :(得分:16)
我想你可以用这个:
MyDialog::keyPressEvent(QKeyEvent *e) {
if(e->key() != Qt::Key_Escape)
QDialog::keyPressEvent(e);
else {/* minimize */}
}
另请查看Events and Event Filters文档。
答案 1 :(得分:15)
逃脱呼叫拒绝()。我重写了这个函数(在我的情况下,不是为了最小化对话框而是提示保存)
void MyDialog::reject() {if(cleanupIsOK()) done(0);}
铝_
答案 2 :(得分:3)
重命名拒绝是正确的。但要小心,因为如果要以其他方式关闭对话框,则无法调用close。
MyDialog::reject(){
if(some_closing_condition)
{
QDialog::reject() //calls the default close.
}
else
{
//skip reject operation
}
}
答案 3 :(得分:1)
我认为要做到这一点,你基本上必须避免继承QDialog
。 The documentation for QDialog
说:
退出密钥
如果用户按下了Esc键 对话框,QDialog :: reject()将是 调用。这将导致窗口 关闭:关闭事件不可能 忽略。
答案 4 :(得分:0)
有趣的 Qt 文档状态 ESC 调用拒绝()
<块引用>退出键
如果用户在对话框中按下 Esc 键,QDialog::reject() 将是 叫。这将导致窗口关闭:关闭事件不能 忽略
然而 QDialog::reject() 文档说隐藏。即 closeEvent() 被未调用,我已经确认是这种情况。
<块引用>void QDialog::reject() 隐藏模态对话框并将结果代码设置为 Rejected