如何自建按钮,并与QDialogButtonBox::Ok | QDialogButtonBox::Cancel联系起来
时间: 2024-01-07 13:02:47 浏览: 88
要自定义按钮并将其与 QDialogButtonBox 的 OK 和 Cancel 按钮关联起来,您可以使用 QDialogButtonBox::addButton() 方法添加自定义按钮,并使用 QDialogButtonBox::accepted() 和 QDialogButtonBox::rejected() 信号连接自定义按钮的操作。
下面是一个示例代码:
```cpp
class CustomDialog : public QDialog
{
Q_OBJECT
public:
explicit CustomDialog(QWidget *parent = nullptr);
private slots:
void onCustomButtonClicked();
private:
QDialogButtonBox *buttonBox;
QPushButton *customButton;
};
CustomDialog::CustomDialog(QWidget *parent) : QDialog(parent)
{
// 创建对话框中的 QDialogButtonBox
buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
// 创建自定义按钮
customButton = new QPushButton("Custom Button", this);
// 将自定义按钮添加到对话框按钮盒子中
buttonBox->addButton(customButton, QDialogButtonBox::ActionRole);
// 将按钮盒子添加到对话框中
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(buttonBox);
setLayout(layout);
// 将自定义按钮的 clicked() 信号与自定义的槽函数 onCustomButtonClicked() 关联
connect(customButton, &QPushButton::clicked, this, &CustomDialog::onCustomButtonClicked);
// 将 QDialogButtonBox 的 accepted() 信号与 QDialog 的 accept() 槽函数关联
connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
// 将 QDialogButtonBox 的 rejected() 信号与 QDialog 的 reject() 槽函数关联
connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
}
void CustomDialog::onCustomButtonClicked()
{
// 执行您希望在点击自定义按钮后执行的操作
}
```
在上述代码中,我们创建了一个名为 `CustomDialog` 的 QDialog 子类,并在构造函数中创建了 QDialogButtonBox 对象以及一个自定义按钮。然后,我们使用 `addButton()` 方法将自定义按钮添加到 QDialogButtonBox 中的 ActionRole 中。
接下来,我们将 QDialogButtonBox 添加到 QDialog 的布局中,并将自定义按钮的 `clicked()` 信号与自定义的槽函数 `onCustomButtonClicked()` 关联。
最后,我们使用 `accepted()` 信号将 QDialogButtonBox 的 OK 按钮与 QDialog 的 `accept()` 槽函数关联,使用 `rejected()` 信号将 QDialogButtonBox 的 Cancel 按钮与 QDialog 的 `reject()` 槽函数关联。
通过这种方式,您可以自定义一个按钮并将其与 QDialogButtonBox 的 OK 和 Cancel 按钮联系起来。当用户点击任何一个按钮时,对应的 QDialog 的结果将会是 Accepted 或 Rejected,并触发相应的操作。
阅读全文