一、基本介绍
QDialogButtonBox 是 Qt 提供的一个标准对话框按钮盒类,用于在对话框中显示一个或多个标准按钮,例如 OK、Cancel、Yes 和 No 等等。通过调用 QDialogButtonBox 的 addButton() 函数,我们可以添加按钮并设置按钮的属性。QDialogButtonBox 可以自动调整按钮大小并根据按钮数量和布局方向展示特定风格的按钮。同时,QDialogButtonBox 可以检测平台的样式,并调整自己的外观,以便更好地适应运行的操作系统。
// 示例代码
QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
buttonBox->setCenterButtons(true);
connect(buttonBox, &QDialogButtonBox::accepted, this, &MyDialog::accept);
connect(buttonBox, &QDialogButtonBox::rejected, this, &MyDialog::reject);
二、属性设置
QDialogButtonBox 有一些很有用的属性设置函数
- setStandardButtons():设置该 QDialogButtonBox 放置哪些标准按钮。可选的标准按钮由 QDialogButtonBox::StandardButton 枚举类定义。
- addButton():添加一个新的按钮,可以指定显示文本、按钮类型和快捷键。
- setCenterButtons():如果设置为 true,则所有按钮将在对话框区域的中心绘制。
- button():按照按钮类型返回 QDialogButtonBox 中包含的按钮,例如 Ok 按钮和 Cancel 按钮等等。
- buttons():按照迭代器返回包含在按钮盒中的 QAction 按钮。
QDialogButtonBox *buttonBox = new QDialogButtonBox();
QPushButton *okButton = new QPushButton (QDialogButtonBox::Ok);
QPushButton *cancelButton = new QPushButton (QDialogButtonBox::Cancel);
QPushButton *saveButton = new QPushButton(tr("Save"));
buttonBox->addButton(okButton,QDialogButtonBox::AcceptRole);
buttonBox->addButton(cancelButton,QDialogButtonBox::RejectRole);
buttonBox->addButton(saveButton,QDialogButtonBox::ActionRole);
buttonBox->setCenterButtons(true);
三、信号槽连接
QDialogButtonBox 的 accept()、done() 和 reject() 信号可用于与 QPushButton 的 clicked() 信号相关联。我们可以根据特定按钮的单击事件执行特定操作。
connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
四、风格设置
QDialogButtonBox 受Qt GUI管理器的影响,它具有与系统的外观和感觉一致的默认表现。但是,我们可以使用setStyleSheet()函数自定义按钮的样式,从而改变对话框的外观。
buttonBox->setStyleSheet("QPushButton {"
"color: white;"
"font-weight: bold;"
"border: 1px solid grey;"
"border-radius: 3px;"
"background-color: rgb(54, 54, 54);"
"}"
"QDialogButtonBox {"
"background-color: rgb(105, 105, 105);"
"}");
五、自定义按钮操作
既然我们可以添加按钮并控制其属性和行为,我们也可以自定义特定按钮的操作。
QPushButton* okButton = buttonBox->button(QDialogButtonBox::Ok);
QPushButton* cancelButton = buttonBox->button(QDialogButtonBox::Cancel);
connect(okButton, &QPushButton::clicked, this, &MyDialog::okButtonClicked);
connect(cancelButton, &QPushButton::clicked, this, &MyDialog::cancelButtonClicked);
六、总结
QDialogButtonBox 是 Qt 提供的一个标准对话框按钮盒类,可以用于在对话框中显示一个或多个标准按钮。操作简单,且可给按钮盒和按钮添加自定义操作。同时,QDialogButtonBox 也可以自动调整大小和检测系统样式,以便更好地适应不同的操作系统。
原创文章,作者:RZOTD,如若转载,请注明出处:https://www.506064.com/n/370252.html