QMessageBox按确定不关闭窗口
时间: 2024-03-13 21:41:51 浏览: 177
QMessageBox的四种使用方法
QMessageBox是Qt框架中的一个对话框类,用于显示消息和提示信息。默认情况下,当用户点击QMessageBox的确定按钮时,对话框会自动关闭。如果你希望按下确定按钮后不关闭窗口,可以通过以下两种方式实现:
1. 使用setStandardButtons()方法设置按钮:
```cpp
QMessageBox msgBox;
msgBox.setText("按下确定按钮不关闭窗口");
msgBox.setStandardButtons(QMessageBox::Ok);
msgBox.setDefaultButton(QMessageBox::Ok);
msgBox.exec();
```
通过setStandardButtons()方法设置对话框的按钮为只有一个确定按钮,然后使用setDefaultButton()方法将默认按钮设置为确定按钮。这样,当用户点击确定按钮时,对话框不会关闭。
2. 自定义对话框的按钮:
```cpp
QMessageBox msgBox;
msgBox.setText("按下确定按钮不关闭窗口");
QPushButton *okButton = msgBox.addButton(QMessageBox::Ok);
okButton->setObjectName("NoCloseButton"); // 设置按钮的对象名
msgBox.exec();
// 在对话框的槽函数中处理按钮点击事件
QObjectList buttons = msgBox.children();
foreach (QObject *button, buttons) {
if (button->objectName() == "NoCloseButton") {
QObject::connect(button, &QPushButton::clicked, &msgBox, &QMessageBox::reject);
break;
}
}
```
通过addButton()方法添加一个自定义的确定按钮,并设置其对象名为"NoCloseButton"。然后,在对话框的槽函数中,通过连接按钮的clicked信号和QMessageBox的reject槽函数,实现点击按钮后不关闭对话框。
阅读全文