我只想让某一个弹窗做此操作,你这种方法会让其他所有弹窗在点击 OK 按钮后 QDialog 都不会消失退出
时间: 2024-04-13 15:29:02 浏览: 16
如果您只想针对特定的某一个 QDialog 对象,在点击 OK 按钮后不让其消失退出,可以使用 `setResult()` 方法来设置 QDialog 的结果。
下面是一个示例代码:
```cpp
class CustomDialog : public QDialog
{
Q_OBJECT
public:
explicit CustomDialog(QWidget *parent = nullptr);
private slots:
void onOkButtonClicked();
};
CustomDialog::CustomDialog(QWidget *parent) : QDialog(parent)
{
// 创建对话框中的 OK 按钮
QPushButton *okButton = new QPushButton("OK", this);
// 将按钮的 clicked() 信号与自定义的槽函数 onOkButtonClicked() 关联
connect(okButton, &QPushButton::clicked, this, &CustomDialog::onOkButtonClicked);
}
void CustomDialog::onOkButtonClicked()
{
// 执行您希望在点击 OK 按钮后执行的操作
// 设置对话框的结果为 Accepted,不会让对话框消失退出
setResult(QDialog::Accepted);
}
```
在上述代码中,我们创建了一个名为 `CustomDialog` 的 QDialog 子类,并在构造函数中创建了一个名为 `okButton` 的 QPushButton 对象。然后,我们使用 `connect()` 函数将按钮的 `clicked()` 信号与自定义的槽函数 `onOkButtonClicked()` 关联。
在 `onOkButtonClicked()` 槽函数中,您可以执行您希望在点击 OK 按钮后执行的操作,并使用 `setResult()` 方法将对话框的结果设置为 `QDialog::Accepted`,从而不让对话框消失退出。
通过这种方式,您可以更简单地控制特定对话框在点击 OK 按钮后的行为,并且不让特定对话框自动关闭。其他 QDialog 对象不会受到影响。