11class RibbonMainWindowPrivate
15 RibbonMainWindowPrivate();
16 void setMenuWidget(QWidget *menuBar);
18 RibbonBar *m_ribbonBar;
22RibbonMainWindowPrivate::RibbonMainWindowPrivate()
24 , m_theme(RibbonTheme::LightOffice2013Theme)
28void RibbonMainWindowPrivate::setMenuWidget(QWidget *menuBar)
30 Q_Q(RibbonMainWindow);
31 RibbonBar *bar = qobject_cast<RibbonBar *>(menuBar);
34 m_ribbonBar->removeEventFilter(q);
40 m_ribbonBar->installEventFilter(q);
46RibbonMainWindow::RibbonMainWindow(QWidget *parent)
63 return d->m_ribbonBar;
70 d->m_ribbonBar->resizeRibbon();
81 d->m_ribbonBar->updateRibbonTheme();
82 d->m_ribbonBar->resizeRibbon();
94 setWindowFlags(flags);
103 QMainWindow::setMenuWidget(menuBar);
104 d->setMenuWidget(menuBar);
121 case QEvent::Resize: {
122 if (d->m_ribbonBar) {
128 int w = d->m_ribbonBar->sizeHint().width();
129 if (w != minimumWidth()) {
132 if (d->m_ribbonBar->size().width() != this->size().width()) {
133 d->m_ribbonBar->setFixedWidth(this->size().width());
140 return QMainWindow::event(e);
146 if (!isMaximized() && d->m_ribbonBar && d->m_ribbonBar == obj) {
147 if (
event->type() == QEvent::Resize) {
148 int w = d->m_ribbonBar->sizeHint().width();
149 if (w != minimumWidth()) {
154 return QMainWindow::eventFilter(obj,
event);
RibbonBar 继承 QMenuBar, 在 RibbonWindow 中直接替换了原来的 QMenuBar
void setRibbonTheme(int theme)
theme, see to RibbonTheme::ThemeStyle
void setMenuWidget(QWidget *menuBar)
virtual void updateWindowFlags(Qt::WindowFlags flags)
virtual bool eventFilter(QObject *obj, QEvent *event) override
void loadTheme(const QString &themeFile)
virtual bool event(QEvent *e) override
void setMenuBar(QMenuBar *menuBar)
virtual ~RibbonMainWindow() override
RibbonBar * ribbonBar() const
static void loadTheme(const QString &themeFile, QWidget *widget=nullptr)
If the widget is nullptr, css/qss will be applied to QApplication
static void setTheme(int themeStyle, QWidget *widget=nullptr)
If you have a custom theme, please use loadTheme
#define QX_INIT_PRIVATE(Class)
#define QX_DECLARE_PUBLIC(Class)
#define Q_NULLPTR
Copyleft (C) 2025 maminjie canpool@163.com SPDX-License-Identifier: MulanPSL-2.0
#define QX_FINI_PRIVATE()
#define QX_RIBBON_END_NAMESPACE
#define QX_RIBBON_BEGIN_NAMESPACE