13class RibbonWindowPrivate
17 RibbonWindowPrivate();
18 void destroyFrameless();
19 void setFrameless(
bool frameless);
22 WindowButtonGroup *m_windowButtonGroup;
27RibbonWindowPrivate::RibbonWindowPrivate()
34void RibbonWindowPrivate::destroyFrameless()
37 RibbonBar *rb = q->ribbonBar();
39 if (m_framelessHelper) {
40 delete m_framelessHelper;
43 if (m_windowButtonGroup) {
44 m_windowButtonGroup->hide();
48 delete m_windowButtonGroup;
53void RibbonWindowPrivate::setFrameless(
bool frameless)
56 RibbonBar *rb = q->ribbonBar();
61 bool isHidden = q->isHidden();
67 m_framelessHelper->setTitleHeight(rb->titleBarHeight());
68 m_framelessHelper->addCaptionClassName(
"QxRibbon::RibbonBar");
70 m_windowButtonGroup =
new WindowButtonGroup(q);
72 rb->setWindowButtonGroup(m_windowButtonGroup);
75 Qt::WindowStates s = q->windowState();
76 if (s.testFlag(Qt::WindowFullScreen)) {
77 m_windowButtonGroup->setVisible(
false);
79 m_windowButtonGroup->setVisible(
true);
81 m_windowButtonGroup->setWindowStates(s);
82 q->setWindowFlags(q->windowFlags() | Qt::FramelessWindowHint);
85 q->setWindowFlags(q->windowFlags() & ~Qt::FramelessWindowHint);
94void RibbonWindowPrivate::init()
96 setFrameless(m_frameless);
99RibbonWindow::RibbonWindow(QWidget *parent)
116 return d->m_frameless;
122 if (d->m_frameless == frameless) {
125 d->m_frameless = frameless;
126 d->setFrameless(frameless);
134 setWindowFlags(flags);
139 d->m_windowButtonGroup->updateWindowFlags(flags);
155 case QEvent::MouseButtonPress:
156 case QEvent::MouseButtonRelease:
157 case QEvent::MouseMove:
159 case QEvent::HoverMove:
160 case QEvent::MouseButtonDblClick:
161 QApplication::sendEvent(
this, e);
174 case QEvent::WindowStateChange: {
175 Qt::WindowStates s = windowState();
177 if (s.testFlag(Qt::WindowFullScreen)) {
178 d->m_windowButtonGroup->setVisible(
false);
180 d->m_windowButtonGroup->setVisible(
true);
182 d->m_windowButtonGroup->setWindowStates(s);
void setWindowTitleVisible(bool visible)
virtual bool eventFilter(QObject *obj, QEvent *event) override
virtual bool event(QEvent *e) override
void windowStateChanged(Qt::WindowStates state)
RibbonBar * ribbonBar() const
如果要使用 RibbonBar,必须使用 RibbonWindow 代替 QMainWindow
void updateWindowFlags(Qt::WindowFlags flags) override
virtual bool event(QEvent *e) override
virtual bool eventFilter(QObject *obj, QEvent *e) override
void setFrameless(bool frameless)
#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