8#include <QXmlStreamReader>
19class RibbonCustomizeDialogUi
22 RibbonCustomizeWidget *customWidget;
23 QVBoxLayout *verticalLayoutMain;
24 QHBoxLayout *horizontalLayoutButtonGroup;
25 QPushButton *pushButtonCancel;
26 QPushButton *pushButtonOk;
27 QSpacerItem *spacerItemleft;
29 void setupUi(RibbonBar *ribbonBar, QWidget *customizeDialog)
31 if (customizeDialog->objectName().isEmpty()) {
32 customizeDialog->setObjectName(QStringLiteral(
"RibbonCustomizeDialog"));
34 customizeDialog->resize(800, 600);
35 verticalLayoutMain =
new QVBoxLayout(customizeDialog);
36 verticalLayoutMain->setObjectName(QStringLiteral(
"verticalLayoutMain"));
38 customWidget =
new RibbonCustomizeWidget(ribbonBar, customizeDialog);
39 customWidget->setObjectName(QStringLiteral(
"customWidget"));
40 verticalLayoutMain->addWidget(customWidget);
42 horizontalLayoutButtonGroup =
new QHBoxLayout();
43 horizontalLayoutButtonGroup->setObjectName(QStringLiteral(
"horizontalLayoutButtonGroup"));
45 spacerItemleft =
new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
46 horizontalLayoutButtonGroup->addItem(spacerItemleft);
48 pushButtonOk =
new QPushButton(customizeDialog);
49 pushButtonOk->setObjectName(QStringLiteral(
"pushButtonOk"));
50 horizontalLayoutButtonGroup->addWidget(pushButtonOk);
52 pushButtonCancel =
new QPushButton(customizeDialog);
53 pushButtonCancel->setObjectName(QStringLiteral(
"pushButtonCancel"));
54 horizontalLayoutButtonGroup->addWidget(pushButtonCancel);
56 verticalLayoutMain->addItem(horizontalLayoutButtonGroup);
57 retranslateUi(customizeDialog);
60 void retranslateUi(QWidget *customizeDialog)
62 customizeDialog->setWindowTitle(
63 QApplication::translate(
"RibbonCustomizeDialog",
"Customize Dialog",
Q_NULLPTR));
64 pushButtonOk->setText(QApplication::translate(
"RibbonCustomizeDialog",
"OK",
Q_NULLPTR));
65 pushButtonCancel->setText(QApplication::translate(
"RibbonCustomizeDialog",
"Cancel",
Q_NULLPTR));
71RibbonCustomizeDialog::RibbonCustomizeDialog(
RibbonBar *bar, QWidget *p, Qt::WindowFlags f)
73 , ui(new RibbonCustomizeDialogUi)
75 ui->setupUi(bar,
this);
77 connect(ui->pushButtonOk, &QPushButton::clicked,
this, [
this]() {
78 ui->customWidget->apply();
81 connect(ui->pushButtonCancel, &QPushButton::clicked,
this, &QDialog::reject);
86 ui->customWidget->setupActionsManager(mgr);
94 return ui->customWidget->apply();
99 ui->customWidget->clear();
104 return ui->customWidget->toXml(xml);
109 return ui->customWidget->toXml(xmlpath);
114 ui->customWidget->fromXml(xml);
119 ui->customWidget->fromXml(xmlpath);
125 bool isModal = this->isModal();
126 ui->pushButtonCancel->setVisible(isModal);
127 ui->pushButtonOk->setVisible(isModal);
134 if (!f.open(QIODevice::ReadOnly | QIODevice::Text)) {
138 QXmlStreamReader xml(&f);
RibbonBar 继承 QMenuBar, 在 RibbonWindow 中直接替换了原来的 QMenuBar
bool toXml(QXmlStreamWriter *xml) const
void showEvent(QShowEvent *e) override
void setupActionsManager(RibbonActionsManager *mgr)
void fromXml(QXmlStreamReader *xml)
bool QxRibbonCustomizeApplyFromXmlFile(const QString &filePath, RibbonBar *bar, RibbonActionsManager *mgr)
直接加载xml自定义ribbon配置文件用于ribbon的自定义显示
#define Q_NULLPTR
Copyleft (C) 2025 maminjie canpool@163.com SPDX-License-Identifier: MulanPSL-2.0
#define QX_RIBBON_END_NAMESPACE
#define QX_RIBBON_BEGIN_NAMESPACE