QDialogButtonBox
是 Qt 中用于管理对话框按钮的一个控件。它可以方便地创建并管理一组标准按钮(如“确定”、“取消”、“应用”等),并提供了一个一致的用户界面。
基本用法
以下是使用 QDialogButtonBox
的基本步骤:
- 创建
QDialogButtonBox
实例。 - 添加按钮(可以使用标准按钮或自定义按钮)。
- 将按钮框添加到对话框中。
- 连接按钮的信号和槽。
示例代码
下面是一个简单的示例,展示了如何使用 QDialogButtonBox
创建一个对话框并处理按钮点击事件:
#include <QApplication>
#include <QDialog>
#include <QDialogButtonBox>
#include <QVBoxLayout>
#include <QLabel>
class MyDialog : public QDialog {
public:
MyDialog(QWidget *parent = nullptr) : QDialog(parent) {
// 创建布局
QVBoxLayout *layout = new QVBoxLayout(this);
// 添加标签
QLabel *label = new QLabel("Do you want to continue?", this);
layout->addWidget(label);
// 创建按钮框
QDialogButtonBox *buttonBox = new QDialogButtonBox(this);
// 添加标准按钮
buttonBox->addButton(QDialogButtonBox::Yes);
buttonBox->addButton(QDialogButtonBox::No);
// 连接信号和槽
connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
// 将按钮框添加到布局中
layout->addWidget(buttonBox);
// 设置对话框的布局
setLayout(layout);
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
MyDialog dialog;
if (dialog.exec() == QDialog::Accepted) {
qDebug() << "User chose Yes.";
} else {
qDebug() << "User chose No.";
}
return app.exec();
}
关键点
- 创建布局:使用
QVBoxLayout
来管理对话框中的控件。 - 添加标准按钮:使用
QDialogButtonBox::addButton
方法添加标准按钮,如“是”和“否”。 - 信号与槽:连接
accepted
和rejected
信号到对话框的accept
和reject
槽,以处理用户的选择。 - 执行对话框:使用
exec()
方法显示对话框,并根据返回值判断用户的选择。
自定义按钮
如果需要添加自定义按钮,可以使用 addButton
方法:
QPushButton *customButton = new QPushButton("Custom");
buttonBox->addButton(customButton, QDialogButtonBox::AcceptRole);
connect(customButton, &QPushButton::clicked, this, &MyDialog::accept);