QDialog 右上角的 “X” 后触发是否确认退出提示
时间: 2024-10-27 09:07:25 浏览: 35
`QDialog` 是 Qt 框架中的一个对话框类,通常用于显示临时或信息级别的窗口。右上角的 "X"(关闭按钮)默认情况下点击后会直接关闭窗口,不提供确认退出的提示。如果你想在关闭前给用户提供确认,你可以自定义这个行为。
一种常见的做法是重写 `closeEvent()` 函数,添加一个 `QMessageBox::question()` 或者 `QMessageBox::warning()` 来询问用户是否真的要退出。这里是一个简单的例子:
```cpp
#include <QDialog>
#include <QPushButton>
#include <QMessageBox>
class CustomDialog : public QDialog {
public:
CustomDialog(QWidget *parent = nullptr) : QDialog(parent) {
// 设置窗口内容...
QPushButton *exitButton = new QPushButton("Close", this);
exitButton->setGeometry(QRect(10, 10, 75, 25));
connect(exitButton, &QPushButton::clicked, this, &CustomDialog::handleClose);
}
private slots:
void handleClose() {
QMessageBox::StandardButton response = QMessageBox::question(this,
tr("Confirm Exit"), tr("Are you sure you want to quit?"),
QMessageBox::Yes | QMessageBox::No, QMessageBox::No);
if (response == QMessageBox::Yes)
accept(); // 用户选择“是”,接受并关闭
else
reject(); // 用户选择“否”,不关闭
}
};
```
在这个例子中,当用户点击 "Close" 按钮时,会弹出一个消息框询问是否确定退出。如果用户点击“是”,则调用 `accept()` 关闭对话框;如果点击“否”,则调用 `reject()` 让对话框保持打开状态。
阅读全文