![]() |
SARibbon 2.5.2
SARibbon wiki
|
如果要使用SARibbonBar,必须使用此类代替QMainWindow 更多...
#include <SARibbonMainWindow.h>
类 | |
| class | PrivateData |
| The SARibbonMainWindowPrivate class | |
Public 成员函数 | |
| SARibbonMainWindow (QWidget *parent=nullptr, SARibbonMainWindowStyles style=SARibbonMainWindowStyleFlag::UseRibbonMenuBar|SARibbonMainWindowStyleFlag::UseRibbonFrame, const Qt::WindowFlags flags=Qt::WindowFlags()) | |
| 构造一个 SARibbonMainWindow 实例。 | |
| SARibbonBar * | ribbonBar () const |
| 返回ribbonbar,如果不是使用ribbon模式,返回nullptr | |
| void | setRibbonBar (SARibbonBar *ribbon) |
| 设置ribbonbar | |
| SAFramelessHelper * | framelessHelper () |
| void | updateWindowFlag (Qt::WindowFlags flags) |
| 此函数仅用于控制最小最大化和关闭按钮的显示 | |
| void | setRibbonTheme (SARibbonTheme theme) |
| SARibbonMainWindow::setRibbonTheme | |
| SARibbonTheme | ribbonTheme () const |
| bool | isUseRibbon () const |
| SARibbonSystemButtonBar * | windowButtonBar () const |
| 获取系统按钮组,可以在此基础上添加其他按钮 | |
| SARibbonMainWindowStyles | ribbonMainwindowStyle () const |
| 获取当前ribbonMainWidow的样式 | |
| virtual bool | eventFilter (QObject *obj, QEvent *e) Q_DECL_OVERRIDE |
Protected 成员函数 | |
| SARibbonBar * | createRibbonBar () |
| 创建ribbonbar的工厂函数 | |
属性 | |
| SARibbonTheme | ribbonTheme |
友元 | |
| class | SARibbonBar |
如果要使用SARibbonBar,必须使用此类代替QMainWindow
由于ribbon的风格和传统的Toolbar风格差异较大, SARibbonBar使用需要把原有的QMainWindow替换为SARibbonMainWindow, SARibbonMainWindow是个无边框窗体,继承自QMainWindow(目前使用第三方的无边框方案https://github.com/wangwenx190/framelesshelper), 其构造函数的参数useRibbon用于指定是否使用ribbon风格,默认为true
如果想换回非ribbon风格,只需要把useRibbon设置为false即可, 成员函数isUseRibbon用于判断当前是否为ribbon模式,这个函数在兼容传统Toolbar风格和ribbon风格时非常有用
但这个不支持动态切换,因此,实际工程中,你若要进行切换,需要写配置文件,程序在构造时传入模式, 并且,你的程序要做好判断,因为非Ribbon模式下,所有Ribbon相关的接口都会返回空指针
SARibbonMainWindow 提供了几种常用的ribbon样式 通过setRibbonTheme 可改变ribbon的样式,用户也可通过qss自己定义自己的样式
如果你自己继承了SARibbonBar,你可以通过setRibbonBar 设置自己的ribbonbar进去
另外有个一个更加高效的方法,来实现自定义的Ribbon,就是继承一个SARibbonElementFactory
SARibbonMainWindow生成之前(一般在main函数),设置元件工厂:
此时,Ribbon的元素会通过MyRibbonFactory的接口来生成
|
explicit |
构造一个 SARibbonMainWindow 实例。
此构造函数初始化一个带有 Ribbon 界面风格的主窗口,支持自定义窗口样式(如是否使用 Ribbon 边框、菜单栏等), 并根据样式自动配置窗口行为(如无边框、RibbonBar 安装等)。
| parent | 父窗口部件 |
| style | 窗口样式标志,控制窗口外观和行为。支持以下标志组合:
|
| flags | 标准 Qt 窗口标志 |
UseRibbonFrame,则窗口将自动安装无边框支持。
|
protected |
创建ribbonbar的工厂函数
用户如果重写了SARibbonBar,可以通过重新此虚函数返回自己的Ribbon实例
| SARibbonBar * SARibbonMainWindow::ribbonBar | ( | ) | const |
返回ribbonbar,如果不是使用ribbon模式,返回nullptr
| SARibbonMainWindowStyles SARibbonMainWindow::ribbonMainwindowStyle | ( | ) | const |
获取当前ribbonMainWidow的样式
| void SARibbonMainWindow::setRibbonBar | ( | SARibbonBar * | ribbon | ) |
设置ribbonbar
| bar |
| void SARibbonMainWindow::setRibbonTheme | ( | SARibbonTheme | theme | ) |
SARibbonMainWindow::setRibbonTheme
注意某些版本的qt,在构造函数设置主题会不完全生效,可以使用QTimer投放到队列最后执行,如:
| theme |
| SARibbonSystemButtonBar * SARibbonMainWindow::windowButtonBar | ( | ) | const |
获取系统按钮组,可以在此基础上添加其他按钮