QDialogButtonBox
2025-01-07
1
0
QDialogButtongBox是一个包含很多按钮的控件,对话框中有多个需要分组排列的按钮时,可以使用QDialogButtongBox类。
开发人员可以向QDialogButtonBox添加按钮,QDialogButtonBox会根据平台自动使用合适的布局。
使用QDialogButtonBox可以通过setStandardButtons函数实现组合创建以下类型的按钮:
Constant | Value | Description |
---|---|---|
QDialogButtonBox::Ok | 0x00000400 | AcceptRole角色下定义的Ok按钮 |
QDialogButtonBox::Open | 0x00002000 | AcceptRole角色下定义的Open按钮 |
QDialogButtonBox::Save | 0x00000800 | AcceptRole角色下定义的Save按钮 |
QDialogButtonBox::Cancel | 0x00400000 | RejectRole角色下定义的Cancel按钮 |
QDialogButtonBox::Close | 0x00200000 | RejectRole角色下定义的Close按钮 |
QDialogButtonBox::Discard | 0x00800000 | DestructiveRole角色下定义的Discard或Don’t Save按钮,具体取决于使用的平台 |
QDialogButtonBox::Apply | 0x02000000 | ApplyRole角色下定义的Apply按钮 |
QDialogButtonBox::Reset | 0x04000000 | ResetRole角色下定义的Reset按钮 |
QDialogButtonBox::RestoreDefaults | 0x08000000 | ResetRole角色下定义的RestoreDefaults按钮 |
QDialogButtonBox::Help | 0x01000000 | HelpRole角色下定义的Help按钮 |
QDialogButtonBox::SaveAll | 0x00001000 | AcceptRole角色下定义的Save All按钮 |
QDialogButtonBox::Yes | 0x00004000 | YesRole角色下定义的Yes按钮 |
QDialogButtonBox::YesToAll | 0x00008000 | YesRole角色下定义的Yes to All按钮 |
QDialogButtonBox::No | 0x00010000 | NoRole角色下定义的No按钮 |
QDialogButtonBox::NoToAll | 0x00020000 | NoRole角色下定义的No to All按钮 |
QDialogButtonBox::Abort | 0x00040000 | RejectRole角色下定义的Abort按钮 |
QDialogButtonBox::Retry | 0x00080000 | AcceptRole角色下定义的Retry按钮 |
QDialogButtonBox::Ignore | 0x00100000 | AcceptRole角色下定义的Ignore按钮 |
QDialogButtonBox::NoButton | 0x00000000 | 无效按钮 |
示例代码如下:
#include <QApplication>
#include <QDialog>
#include <QDialogButtonBox>
#include <QLabel>
#include <QVBoxLayout>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QDialog dialog;
dialog.setWindowTitle("QDialogButtonBox");
QVBoxLayout *layout = new QVBoxLayout(&dialog);
QLabel *label = new QLabel("Hello, QDialogButtonBox!");
layout->addWidget(label);
// 创建一个 QDialogButtonBox 并添加按钮
QDialogButtonBox *buttonBox = new QDialogButtonBox(&dialog);
buttonBox->setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
layout->addWidget(buttonBox);
QObject::connect(buttonBox, &QDialogButtonBox::accepted, [&]() {
// 接受按钮被点击
label->setText("Clicked OK");
});
QObject::connect(buttonBox, &QDialogButtonBox::rejected, [&]() {
// 拒绝按钮被点击
label->setText("Clicked Cancel");
});
dialog.setLayout(layout);
dialog.show();
return app.exec();
}
https://blog.csdn.net/maizousidemao/article/details/127827096
https://blog.csdn.net/MrHHHHHH/article/details/133893844