可以通过重写QDialog的keyPressEvent(QKeyEvent *event)方法来实现按下ESC键退出对话框而不是触发异常。

以下是一个示例:

#include <QDialog>
#include <QKeyEvent>

class MyDialog : public QDialog
{
public:
    MyDialog(QWidget *parent = nullptr)
        : QDialog(parent)
    {
    }

protected:
    void keyPressEvent(QKeyEvent *event) override
    {
        if (event->key() == Qt::Key_Escape) {
            // 在这里执行退出对话框的操作
            close();
        } else {
            QDialog::keyPressEvent(event);
        }
    }
};

在上面的示例中,我们重写了keyPressEvent方法,如果按下的键是ESC键,则调用close()方法关闭对话框,否则调用基类的keyPressEvent方法处理其他键盘事件。

使用这个自定义的对话框类替代QDialog类,按下ESC键时将会退出对话框而不是触发异常

qt c++ QDialog esc怎么退出而不是except

原文地址: https://www.cveoy.top/t/topic/ipUe 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录