SARibbon 2.5.1
SARibbon wiki
载入中...
搜索中...
未找到
SARibbonMainWindow.h
1#ifndef SARIBBONMAINWINDOW_H
2#define SARIBBONMAINWINDOW_H
3#include "SARibbonGlobal.h"
4#include <QMainWindow>
5
6#if !SARIBBON_USE_3RDPARTY_FRAMELESSHELPER
8#endif
9class QAction;
10class SARibbonBar;
12class QScreen;
59class SA_RIBBON_EXPORT SARibbonMainWindow : public QMainWindow
60{
61 Q_OBJECT
62 SA_RIBBON_DECLARE_PRIVATE(SARibbonMainWindow)
63 friend class SARibbonBar;
64 Q_PROPERTY(SARibbonTheme ribbonTheme READ ribbonTheme WRITE setRibbonTheme)
65
66public:
67 explicit SARibbonMainWindow(QWidget* parent = nullptr,
68 SARibbonMainWindowStyles style = SARibbonMainWindowStyleFlag::UseRibbonMenuBar
69 | SARibbonMainWindowStyleFlag::UseRibbonFrame,
70 const Qt::WindowFlags flags = Qt::WindowFlags());
71 ~SARibbonMainWindow() override;
72 // 返回SARibbonBar
73 SARibbonBar* ribbonBar() const;
74 // 设置ribbonbar
75 void setRibbonBar(SARibbonBar* ribbon);
76#if !SARIBBON_USE_3RDPARTY_FRAMELESSHELPER
77 // 返回SAFramelessHelper
78 SAFramelessHelper* framelessHelper();
79#else
80 // 如果ribbon中有自定义的窗口在标题栏等非点击区域加入后,想能点击,需要调用此接口告知可点击
81 void setFramelessHitTestVisible(QWidget* w, bool visible = true);
82#endif
83 // 此函数仅用于控制最小最大化和关闭按钮的显示
84 void updateWindowFlag(Qt::WindowFlags flags);
85 // 注意主题在构造函数设置主题会不完全生效,使用QTimer投放到队列最后执行即可
86 // QTimer::singleShot(0, this, [ this ]() { this->setRibbonTheme(SARibbonMainWindow::RibbonThemeDark); });
87 void setRibbonTheme(SARibbonTheme theme);
88 SARibbonTheme ribbonTheme() const;
89 // 判断当前是否使用ribbon模式
90 bool isUseRibbon() const;
91 // 获取最大化,最小化,关闭按钮所在的bar。可以通过此函数在最大最小化按钮旁边设置内容
92 SARibbonSystemButtonBar* windowButtonBar() const;
93 // 获取当前mainwidow的样式
94 SARibbonMainWindowStyles ribbonMainwindowStyle() const;
95
96 // 把ribbonbar的事件传递到frameless
97 virtual bool eventFilter(QObject* obj, QEvent* e) Q_DECL_OVERRIDE;
98
99protected:
100 // 创建ribbonbar的工厂函数
101 SARibbonBar* createRibbonBar();
102private Q_SLOTS:
103 void onPrimaryScreenChanged(QScreen* screen);
104};
105
109class SA_RIBBON_EXPORT SARibbonMainWindowEventFilter : public QObject
110{
111 Q_OBJECT
112public:
113 explicit SARibbonMainWindowEventFilter(QObject* par);
115 virtual bool eventFilter(QObject* obj, QEvent* e) override;
116};
117
118#endif // SARIBBONMAINWINDOW_H
该类用于帮助实现无边框窗体的移动和缩放功能。
Definition SAFramelessHelper.h:25
SARibbonBar继承于QMenuBar,在SARibbonMainWindow中直接替换了原来的QMenuBar
Definition SARibbonBar.h:94
针对SARibbonMainWindow的事件处理器,主要处理systembar的位置调整
Definition SARibbonMainWindow.h:110
如果要使用SARibbonBar,必须使用此类代替QMainWindow
Definition SARibbonMainWindow.h:60
窗口的最大最小化按钮
Definition SARibbonSystemButtonBar.h:27