Qt - Esc不应该关闭对话框

Nar*_*rek 16 c++ qt dialog escaping

如何使Esc密钥最小化对话框?默认情况下它会关闭.我应该处理KeyEvent还是有更好的方法?

mos*_*osg 17

我想你可以用这个:

MyDialog::keyPressEvent(QKeyEvent *e) {
    if(e->key() != Qt::Key_Escape)
        QDialog::keyPressEvent(e);
    else {/* minimize */}
}
Run Code Online (Sandbox Code Playgroud)

另请参阅事件和事件过滤器文档.


小智 15

逃脱呼叫拒绝().我重写了这个函数(在我的情况下,不是为了最小化对话框而是提示保存)

void MyDialog::reject() {if(cleanupIsOK()) done(0);}
Run Code Online (Sandbox Code Playgroud)

AL_


小智 5

重命名拒绝是正确的。但要小心,因为如果您想以其他方式关闭对话框,则无法调用 close。

MyDialog::reject(){
    if(some_closing_condition)
    {
        QDialog::reject() //calls the default close.
    }
    else
    {
        //skip reject operation
    }
}
Run Code Online (Sandbox Code Playgroud)