SARibbon 2.5.1
SARibbon wiki
载入中...
搜索中...
未找到
SARibbonMainWindow类 参考

如果要使用SARibbonBar,必须使用此类代替QMainWindow 更多...

#include <SARibbonMainWindow.h>

类 SARibbonMainWindow 继承关系图:

class  PrivateData
 The SARibbonMainWindowPrivate class
 

Public 成员函数

 SARibbonMainWindow (QWidget *parent=nullptr, SARibbonMainWindowStyles style=SARibbonMainWindowStyleFlag::UseRibbonMenuBar|SARibbonMainWindowStyleFlag::UseRibbonFrame, const Qt::WindowFlags flags=Qt::WindowFlags())
 构造一个 SARibbonMainWindow 实例。
 
SARibbonBarribbonBar () const
 返回ribbonbar,如果不是使用ribbon模式,返回nullptr
 
void setRibbonBar (SARibbonBar *ribbon)
 设置ribbonbar
 
SAFramelessHelperframelessHelper ()
 
void updateWindowFlag (Qt::WindowFlags flags)
 此函数仅用于控制最小最大化和关闭按钮的显示
 
void setRibbonTheme (SARibbonTheme theme)
 SARibbonMainWindow::setRibbonTheme
 
SARibbonTheme ribbonTheme () const
 
bool isUseRibbon () const
 
SARibbonSystemButtonBarwindowButtonBar () const
 获取系统按钮组,可以在此基础上添加其他按钮
 
SARibbonMainWindowStyles ribbonMainwindowStyle () const
 获取当前ribbonMainWidow的样式
 
virtual bool eventFilter (QObject *obj, QEvent *e) Q_DECL_OVERRIDE
 

Protected 成员函数

SARibbonBarcreateRibbonBar ()
 创建ribbonbar的工厂函数
 

属性

SARibbonTheme ribbonTheme
 

友元

class SARibbonBar
 

详细描述

如果要使用SARibbonBar,必须使用此类代替QMainWindow

由于ribbon的风格和传统的Toolbar风格差异较大, SARibbonBar使用需要把原有的QMainWindow替换为SARibbonMainWindow, SARibbonMainWindow是个无边框窗体,继承自QMainWindow(目前使用第三方的无边框方案https://github.com/wangwenx190/framelesshelper), 其构造函数的参数useRibbon用于指定是否使用ribbon风格,默认为true

SARibbonMainWindow(QWidget* parent = nullptr,bool useRibbon = true);
如果要使用SARibbonBar,必须使用此类代替QMainWindow
Definition SARibbonMainWindow.h:60

如果想换回非ribbon风格,只需要把useRibbon设置为false即可, 成员函数isUseRibbon用于判断当前是否为ribbon模式,这个函数在兼容传统Toolbar风格和ribbon风格时非常有用

但这个不支持动态切换,因此,实际工程中,你若要进行切换,需要写配置文件,程序在构造时传入模式, 并且,你的程序要做好判断,因为非Ribbon模式下,所有Ribbon相关的接口都会返回空指针

bool isUseRibbon() const;

SARibbonMainWindow 提供了几种常用的ribbon样式 通过setRibbonTheme 可改变ribbon的样式,用户也可通过qss自己定义自己的样式

如果你自己继承了SARibbonBar,你可以通过setRibbonBar 设置自己的ribbonbar进去

另外有个一个更加高效的方法,来实现自定义的Ribbon,就是继承一个SARibbonElementFactory

class MyRibbonFactory:public SARibbonElementFactory{
...
virtual SARibbonBar* createRibbonBar(QWidget* parent){
return new MyRibbonBar(parent);
}
};
SARibbonBar继承于QMenuBar,在SARibbonMainWindow中直接替换了原来的QMenuBar
Definition SARibbonBar.h:94
SARibbon的子元素创建的工厂,SARibbon内部创建子元素都通过SARibbonElementFactory来创建
Definition SARibbonElementFactory.h:34

SARibbonMainWindow生成之前(一般在main函数),设置元件工厂:

SARibbonElementManager::instance()->setupFactory(new MyRibbonFactory());

此时,Ribbon的元素会通过MyRibbonFactory的接口来生成

构造及析构函数说明

◆ SARibbonMainWindow()

SARibbonMainWindow::SARibbonMainWindow ( QWidget *  parent = nullptr,
SARibbonMainWindowStyles  style = SARibbonMainWindowStyleFlag::UseRibbonMenuBar | SARibbonMainWindowStyleFlag::UseRibbonFrame,
const Qt::WindowFlags  flags = Qt::WindowFlags() 
)
explicit

构造一个 SARibbonMainWindow 实例。

此构造函数初始化一个带有 Ribbon 界面风格的主窗口,支持自定义窗口样式(如是否使用 Ribbon 边框、菜单栏等), 并根据样式自动配置窗口行为(如无边框、RibbonBar 安装等)。

参数
parent父窗口部件
style窗口样式标志,控制窗口外观和行为。支持以下标志组合:
  • SARibbonMainWindowStyleFlag::UseRibbonFrame:使用Ribbon自定义边框(会启用无边框窗口)(默认启用)。
  • SARibbonMainWindowStyleFlag::UseNativeFrame:使用系统原生窗口边框。
  • SARibbonMainWindowStyleFlag::UseRibbonMenuBar:使用 Ribbon 风格菜单栏(默认启用)。
  • SARibbonMainWindowStyleFlag::UseNativeMenuBar:使用系统原生菜单栏(非ribbon)。 标志可通过位或(|)组合使用,例如:SARibbonMainWindowStyleFlag::UseRibbonFrame | SARibbonMainWindowStyleFlag::UseRibbonMenuBar
flags标准 Qt 窗口标志
注解
如果启用了 UseRibbonFrame,则窗口将自动安装无边框支持。
参见
SARibbonMainWindowStyleFlag, setRibbonBar(), ribbonTheme()

成员函数说明

◆ createRibbonBar()

SARibbonBar * SARibbonMainWindow::createRibbonBar ( )
protected

创建ribbonbar的工厂函数

用户如果重写了SARibbonBar,可以通过重新此虚函数返回自己的Ribbon实例

返回

◆ ribbonBar()

SARibbonBar * SARibbonMainWindow::ribbonBar ( ) const

返回ribbonbar,如果不是使用ribbon模式,返回nullptr

返回

◆ ribbonMainwindowStyle()

SARibbonMainWindowStyles SARibbonMainWindow::ribbonMainwindowStyle ( ) const

获取当前ribbonMainWidow的样式

返回

◆ setRibbonBar()

void SARibbonMainWindow::setRibbonBar ( SARibbonBar ribbon)

设置ribbonbar

参数
bar

◆ setRibbonTheme()

void SARibbonMainWindow::setRibbonTheme ( SARibbonTheme  theme)

SARibbonMainWindow::setRibbonTheme

注意某些版本的qt,在构造函数设置主题会不完全生效,可以使用QTimer投放到队列最后执行,如:

QTimer::singleShot(0, this, [ this ]() { this->setRibbonTheme(SARibbonMainWindow::RibbonThemeDark); });
void setRibbonTheme(SARibbonTheme theme)
SARibbonMainWindow::setRibbonTheme
Definition SARibbonMainWindow.cpp:379
参数
theme

◆ windowButtonBar()

SARibbonSystemButtonBar * SARibbonMainWindow::windowButtonBar ( ) const

获取系统按钮组,可以在此基础上添加其他按钮

返回

该类的文档由以下文件生成: