代码之家  ›  专栏  ›  技术社区  ›  Narek

Qt-Esc不应关闭对话框

  •  14
  • Narek  · 技术社区  · 15 年前

    电子稳定控制系统 KeyEvent 还是有更好的办法?

    4 回复  |  直到 9 年前
        1
  •  21
  •   flederwiesel G S    8 年前

    我想你可以用这个:

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

    还可以看看 Events and Event Filters 文件。

        2
  •  16
  •   Al_    13 年前

    转义调用reject()。我重写此函数(在我的情况下,不是最小化对话框,而是提示保存)

    void MyDialog::reject() {if(cleanupIsOK()) done(0);}
    

    铝_

        3
  •  4
  •   Andres Peralta    12 年前

    MyDialog::reject(){
        if(some_closing_condition)
        {
            QDialog::reject() //calls the default close.
        }
        else
        {
            //skip reject operation
        }
    }
    
        4
  •  0
  •   Tyler McHenry    15 年前

    我认为要做到这一点,您基本上必须避免继承 QDialog . The documentation for QDialog

    退出键

    如果用户在 对话框中,QDialog::reject()将 打电话。这将导致窗口 关闭:关闭事件不能为空 忽略。

        5
  •  0
  •   Adam    4 年前

    有趣的是,Qt docs state ESC calls reject()

    退出键

    打电话。这将导致窗口关闭:无法启动关闭事件 忽略

    打过电话,我已经证实了。

    隐藏模式对话框并将结果代码设置为“已拒绝”