QDialog我一按回车键,窗口直接关闭,怎么避免这种情况?
时间: 2024-01-02 22:04:05 浏览: 513
默认情况下,当您在QDialog中按下Enter键时,QDialog会自动关闭。如果您想要避免这种情况,可以在QDialog中设置以下属性:
```cpp
setAutoDefault(false);
```
这将禁用QDialog的自动默认按钮功能,这意味着QDialog将不再自动关闭。如果您需要一个默认按钮,请使用QPushButton的setDefault()函数将其设置为默认按钮。
完整示例代码如下:
```cpp
#include <QDialog>
#include <QKeyEvent>
#include <QPushButton>
class MyDialog : public QDialog {
public:
explicit MyDialog(QWidget *parent = nullptr) : QDialog(parent) {
QPushButton *defaultButton = new QPushButton(tr("OK"), this);
defaultButton->setDefault(true);
setAutoDefault(false);
}
protected:
void keyPressEvent(QKeyEvent *event) override {
if (event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter) {
event->ignore();
} else {
QDialog::keyPressEvent(event);
}
}
};
```
这里我们创建了一个名为"defaultButton"的QPushButton,并将其设置为默认按钮。然后我们调用setAutoDefault(false)来禁用QDialog的自动默认按钮功能。最后,我们重写了keyPressEvent()事件处理函数,以便在按下Enter键时忽略该事件。
阅读全文