SARibbon 2.2.3
SARibbon wiki
载入中...
搜索中...
未找到
SARibbonBar类 参考

SARibbonBar继承于QMenuBar,在SARibbonMainWindow中直接替换了原来的QMenuBar 更多...

#include <SARibbonBar.h>

类 SARibbonBar 继承关系图:

class  PrivateData
 

Public 类型

enum  RibbonStyleFlag {
  RibbonStyleLoose = 0x0001 , RibbonStyleCompact = 0x0002 , RibbonStyleThreeRow = 0x0010 , RibbonStyleTwoRow = 0x0020 ,
  RibbonStyleLooseThreeRow = RibbonStyleLoose | RibbonStyleThreeRow , RibbonStyleCompactThreeRow = RibbonStyleCompact | RibbonStyleThreeRow , RibbonStyleLooseTwoRow = RibbonStyleLoose | RibbonStyleTwoRow , RibbonStyleCompactTwoRow = RibbonStyleCompact | RibbonStyleTwoRow
}
 
enum  RibbonMode { MinimumRibbonMode , NormalRibbonMode }
 定义当前ribbon 的状态 更多...
 
using FpCategoryIterate = std::function< bool(SARibbonCategory*) >
 
using FpPannelIterate = SARibbonCategory::FpPannelIterate
 

信号

void applicationButtonClicked ()
 应用按钮点击响应 - 左上角的按钮,通过关联此信号触发应用按钮点击的效果
 
void currentRibbonTabChanged (int index)
 标签页变化触发的信号
 
void ribbonModeChanged (SARibbonBar::RibbonMode nowState)
 ribbon的状态发生了变化后触发此信号
 
void ribbonStyleChanged (SARibbonBar::RibbonStyles nowStyle)
 ribbon的状态发生了变化后触发此信号
 
void titleBarHeightChanged (int oldHeight, int newHeight)
 标题栏高度发生了变化的信号
 
void actionTriggered (QAction *action)
 参考QToolBar::actionTriggered的信号
 

Public 成员函数

 SARibbonBar (QWidget *parent=nullptr)
 SARibbonBar构造函数
 
QAbstractButton * applicationButton ()
 返回applicationButton
 
void setApplicationButton (QAbstractButton *btn)
 设置applicationButton,如果想隐藏,可以传入nullptr
 
SARibbonTabBarribbonTabBar ()
 返回tabbar
 
SARibbonCategoryaddCategoryPage (const QString &title)
 添加一个标签 如果需要删除,直接delete即可,SARibbonBar会对其进行处理
 
void addCategoryPage (SARibbonCategory *category)
 添加一个标签
 
Q_INVOKABLE void addCategoryPage (QWidget *category)
 qtdesigner专用
 
SARibbonCategoryinsertCategoryPage (const QString &title, int index)
 添加一个category,category的位置在index,如果当前category数量少于index,将插入到最后
 
void insertCategoryPage (SARibbonCategory *category, int index)
 插入一个category
 
SARibbonCategorycategoryByName (const QString &title) const
 通过名字查找Category
 
SARibbonCategorycategoryByObjectName (const QString &objname) const
 通过ObjectName查找Category
 
SARibbonCategorycategoryByIndex (int index) const
 通过索引找到category,如果超过索引范围,会返回nullptr
 
void hideCategory (SARibbonCategory *category)
 隐藏category,并不会删除或者取走,只是隐藏
 
void showCategory (SARibbonCategory *category)
 显示被隐藏的category
 
bool isCategoryVisible (const SARibbonCategory *c) const
 判断这个category是否在显示状态,也就是tabbar有这个category
 
int categoryIndex (const SARibbonCategory *c) const
 获取category的索引
 
void moveCategory (int from, int to)
 移动一个Category从from index到to index
 
QList< SARibbonCategory * > categoryPages (bool getAll=true) const
 获取当前显示的所有的SARibbonCategory,包含未显示的SARibbonContextCategory的SARibbonCategory也一并返回
 
void removeCategory (SARibbonCategory *category)
 移除SARibbonCategory
 
SARibbonContextCategoryaddContextCategory (const QString &title, const QColor &color=QColor(), const QVariant &id=QVariant())
 添加上下文标签
 
void addContextCategory (SARibbonContextCategory *context)
 添加上下文标签
 
void showContextCategory (SARibbonContextCategory *context)
 显示上下文标签
 
void hideContextCategory (SARibbonContextCategory *context)
 隐藏上下文标签
 
bool isContextCategoryVisible (SARibbonContextCategory *context)
 判断上下文是否在显示状态
 
void setContextCategoryVisible (SARibbonContextCategory *context, bool visible)
 设置上下文标签的显示状态
 
QList< SARibbonContextCategory * > contextCategoryList () const
 获取所有的上下文标签
 
void destroyContextCategory (SARibbonContextCategory *context)
 销毁上下文标签,上下文标签的SARibbonCategory也会随之销毁
 
void setMinimumMode (bool isHide)
 设置为最小/正常模式
 
bool isMinimumMode () const
 当前ribbon是否是隐藏模式
 
void showMinimumModeButton (bool isShow=true)
 设置显示隐藏ribbon按钮
 
bool haveShowMinimumModeButton () const
 是否显示隐藏ribbon按钮
 
QAction * minimumModeAction () const
 隐藏ribbon对应的action
 
RibbonMode currentRibbonState () const
 当前ribbon的状态(正常|最小化)
 
int tabBarHeight () const
 tabBar的高度
 
void setTabBarHeight (int h, bool resizeByNow=true)
 设置tabbar的高度
 
int titleBarHeight () const
 返回标题栏高度
 
void setTitleBarHeight (int h, bool resizeByNow=true)
 设置标题栏的高度
 
int categoryHeight () const
 category的高度
 
void setCategoryHeight (int h, bool resizeByNow=true)
 设置category的高度
 
int normalModeMainBarHeight () const
 正常模式下的高度
 
int minimumModeMainBarHeight () const
 最小模式下的高度
 
SARibbonButtonGroupWidgetactiveRightButtonGroup ()
 激活tabbar右边的按钮群
 
SARibbonButtonGroupWidgetrightButtonGroup ()
 返回右边的按钮群指针
 
SARibbonQuickAccessBaractiveQuickAccessBar ()
 激活QuickAccessBar
 
SARibbonQuickAccessBarquickAccessBar ()
 
void setRibbonStyle (RibbonStyles v)
 设置ribbonbar的风格,此函数会重新设置所有元素,包括button的布局方式, 尤其是从三行变到两行的过程,重设的内容较多
 
RibbonStyles currentRibbonStyle () const
 返回当前ribbon的风格
 
void setCurrentIndex (int index)
 切换到对应标签
 
int currentIndex ()
 返回当前的tab索引
 
void raiseCategory (SARibbonCategory *category)
 确保标签显示出来,tab并切换到对应页
 
bool isTwoRowStyle () const
 判断当前的样式是否为2行
 
bool isThreeRowStyle () const
 判断当前的样式是否为3行
 
bool isLooseStyle () const
 判断当前的样式是否为宽松样式
 
bool isCompactStyle () const
 判断当前的样式是否为紧凑样式
 
void updateRibbonGeometry ()
 更新ribbon的布局数据,此函数适用于一些关键性尺寸变化,换起ribbon下面元素的布局
 
SARibbonPannel::PannelLayoutMode pannelLayoutMode () const
 SARibbonPannel的布局模式
 
void setPannelLayoutMode (SARibbonPannel::PannelLayoutMode m)
 SARibbonPannel的布局模式设置
 
void setTabOnTitle (bool on)
 设置tab在title上面,这样可以省略title区域
 
bool isTabOnTitle () const
 tab是否在title上面
 
void setTabBarBaseLineColor (const QColor &clr)
 tabbar 底部会绘制一条线条,此接口定义线条颜色
 
QColor tabBarBaseLineColor () const
 获取tabbar底部基线颜色
 
void setWindowTitleTextColor (const QColor &clr)
 设置标题的文字颜色
 
QColor windowTitleTextColor () const
 获取标题的文字颜色
 
void setWindowTitleAligment (Qt::Alignment al)
 设置标题的对齐方式
 
Qt::Alignment windowTitleAligment () const
 获取标题的对齐方式
 
void setEnableWordWrap (bool on)
 设置ribbonbar的按钮文字允许换行
 
bool isEnableWordWrap () const
 判断是否允许换行
 
int pannelTitleHeight () const
 pannel标题栏的高度
 
void setPannelTitleHeight (int h)
 设置pannel的高度
 
bool isEnableShowPannelTitle () const
 是否pannel显示标题栏
 
void setEnableShowPannelTitle (bool on)
 设置显示pannel标题
 
void setPannelSpacing (int n)
 设置pannel的spacing
 
int pannelSpacing () const
 pannel的spacing
 
void setPannelToolButtonIconSize (const QSize &s)
 设置pannel按钮的icon尺寸,large action不受此尺寸影响
 
QSize pannelToolButtonIconSize () const
 pannel按钮的icon尺寸,large action不受此尺寸影响
 
SARibbonStackedWidgetribbonStackedWidget ()
 ribbonbar内部的StackedWidget 所有的category都放置在StackedWidget中
 
void setTitleVisible (bool on=false)
 设置是否显示标题
 
bool isTitleVisible () const
 判断标题是否显示
 
void setContextCategoryColorList (const QList< QColor > &cls)
 设置上下文标签的颜色列表
 
QList< QColor > contextCategoryColorList () const
 获取上下文标签的颜色列表
 
void setContextCategoryTitleTextColor (const QColor &clr)
 设置contextCategory 标题的颜色
 
QColor contextCategoryTitleTextColor () const
 contextCategory 标题的颜色
 
void setRibbonAlignment (SARibbonAlignment al)
 设置ribbon的对齐方式
 
SARibbonAlignment ribbonAlignment () const
 ribbon的对齐方式
 
bool iterate (FpCategoryIterate fp)
 此函数会遍历SARibbonBar下的所有Category,执行函数指针bool(SARibbonCategory*)
 
bool iterate (FpPannelIterate fp)
 此函数会遍历SARibbonBar下的所有Category,并迭代所有的pannel,执行函数指针bool(SARibbonPannel*)
 
void setCornerWidgetVisible (bool on, Qt::Corner c=Qt::TopLeftCorner)
 设置边角widget可见性,对于mdi窗口,会出现TopLeftCorner和TopRightCorner两个corner widget
 

静态 Public 成员函数

static bool isTwoRowStyle (RibbonStyles s)
 
static bool isThreeRowStyle (RibbonStyles s)
 判断样式是否为3行
 
static bool isLooseStyle (RibbonStyles s)
 
static bool isCompactStyle (RibbonStyles s)
 判断是否是紧凑样式
 
static QString versionString ()
 获取版本信息
 
static QList< QColor > defaultContextCategoryColorList ()
 获取默认的上下文标签颜色列表
 
static void initHighDpi ()
 提供高分屏的支持静态函数
 

Protected 槽

void onWindowTitleChanged (const QString &title)
 
void onWindowIconChanged (const QIcon &i)
 
void onCategoryWindowTitleChanged (const QString &title)
 category的名字发生改变触发
 
void onStackWidgetHided ()
 ribbon的显示界面隐藏
 
virtual void onCurrentRibbonTabChanged (int index)
 标签切换触发槽函数
 
virtual void onCurrentRibbonTabClicked (int index)
 ribbon tab bar单击
 
virtual void onCurrentRibbonTabDoubleClicked (int index)
 ribbon tab bar双击
 
void onContextsCategoryPageAdded (SARibbonCategory *category)
 
void onContextsCategoryCategoryNameChanged (SARibbonCategory *category, const QString &title)
 上下文标签管理的标签的名字发生变换
 
void onTabMoved (int from, int to)
 标签移动的信号
 

Protected 成员函数

bool eventFilter (QObject *obj, QEvent *e) override
 SARibbonBar::eventFilter
 
int calcMinTabBarWidth () const
 根据情况重置tabbar的宽度,主要针对wps模式
 
void updateCategoryTitleToTabName ()
 更新所有的category title对应的tab名
 
void setWindowButtonGroupSize (const QSize &s)
 告知WindowButtonGroup的尺寸
 
virtual void paintEvent (QPaintEvent *e) Q_DECL_OVERRIDE
 
virtual void resizeEvent (QResizeEvent *e) Q_DECL_OVERRIDE
 
virtual void moveEvent (QMoveEvent *e) Q_DECL_OVERRIDE
 重写moveevent是为了在移动时调整isPopupMode状态下的stackedContainerWidget位置
 
virtual void changeEvent (QEvent *e) Q_DECL_OVERRIDE
 跟踪字体改变
 
virtual bool event (QEvent *e) Q_DECL_OVERRIDE
 
virtual void paintTabbarBaseLine (QPainter &painter)
 绘制tabbar下的基准线,这个方法仅仅在office2013模式下需要
 
virtual void paintWindowTitle (QPainter &painter, const QString &title, const QRect &titleRegion)
 绘制标题栏
 
virtual void paintContextCategoryTab (QPainter &painter, const QString &title, const QRect &contextRect, const QColor &color)
 绘制上下文标签的背景
 

属性

RibbonStyles ribbonStyle
 
bool minimumMode
 
bool minimumModeButton
 
QColor windowTitleTextColor
 
QColor tabBarBaseLineColor
 
Qt::Alignment windowTitleAligment
 
bool enableWordWrap
 
bool enableShowPannelTitle
 
bool tabOnTitle
 
SARibbonPannel::PannelLayoutMode pannelLayoutMode
 

友元

class SARibbonMainWindow
 
class SARibbonSystemButtonBar
 
SA_RIBBON_EXPORT friend QDebug operator<< (QDebug debug, const SARibbonBar &ribbon)
 

详细描述

SARibbonBar继承于QMenuBar,在SARibbonMainWindow中直接替换了原来的QMenuBar

通过setRibbonStyle函数设置ribbon的风格:

void setRibbonStyle(RibbonStyles v);
void setRibbonStyle(RibbonStyles v)
设置ribbonbar的风格,此函数会重新设置所有元素,包括button的布局方式, 尤其是从三行变到两行的过程,重设的内容较多
Definition SARibbonBar.cpp:1492

SARibbonBar参考office和wps,提供了四种风格的Ribbon模式,SARibbonBar::RibbonStyles

如果想ribbon占用的空间足够小,WpsLiteStyleTwoRow模式能比OfficeStyle节省35的高度空间

如何生成ribbon?先看看一个传统的Menu/ToolBar是如何生成的:

void MainWindow::MainWindow()
{
QMenu *fileMenu = menuBar()->addMenu(tr("&File"));
QToolBar *fileToolBar = addToolBar(tr("File"));
//生成action
QAction *newAct = new QAction(newIcon, tr("&New"), this);
fileMenu->addAction(newAct);
fileToolBar->addAction(newAct);
QAction *openAct = new QAction(openIcon, tr("&Open..."), this);
fileMenu->addAction(openAct);
fileToolBar->addAction(openAct);
}

传统的Menu/ToolBar主要通过QMenu的addMenu添加菜单,通过QMainWindow::addToolBar生成QToolBar, 再把QAction设置进QMenu和QToolBar中

SARibbonBar和传统方法相似,不过相对于传统的Menu/ToolBar QMenu和QToolBar是平级的, Ribbon是有明显的层级关系,SARibbonBar下面是 SARibbonCategory, SARibbonCategory下面是SARibbonPannel ,SARibbonPannel下面是SARibbonToolButton , SARibbonToolButton管理着QAction

因此,生成一个ribbon只需以下几个函数:

SARibbonCategory * addCategoryPage(const QString &title)
添加一个标签 如果需要删除,直接delete即可,SARibbonBar会对其进行处理
Definition SARibbonBar.cpp:607
一项ribbon tab页
Definition SARibbonCategory.h:21
SARibbonPannel * addPannel(const QString &title)
添加pannel
Definition SARibbonCategory.cpp:299
pannel页窗口,pannel是ribbon的面板用于承放控件
Definition SARibbonPannel.h:41
void addSmallAction(QAction *action)
添加小图标
Definition SARibbonPannel.cpp:305
void addLargeAction(QAction *action)
添加大图标
Definition SARibbonPannel.cpp:281
Ribbon界面适用的toolButton
Definition SARibbonToolButton.h:14

因此生成步骤如下:

//成员变量
SARibbonCategory* categoryMain;
SARibbonPannel* FilePannel;
//建立ui
void setupRibbonUi()
{
......
//ribbonwindow为SARibbonMainWindow
SARibbonBar* ribbon = ribbonwindow->ribbonBar();
ribbon->setRibbonStyle(SARibbonBar::WpsLiteStyle);
//添加一个Main标签
categoryMain = ribbon->addCategoryPage(QStringLiteral("Main"));
//Main标签下添加一个File Pannel
FilePannel = categoryMain->addPannel(QStringLiteral("FilePannel"));
//开始为File Pannel添加action
FilePannel->addLargeAction(actionNew);
FilePannel->addLargeAction(actionOpen);
FilePannel->addLargeAction(actionSave);
FilePannel->addSmallAction(actionImportMesh);
FilePannel->addSmallAction(actionImportGeometry);
}
SARibbonBar继承于QMenuBar,在SARibbonMainWindow中直接替换了原来的QMenuBar
Definition SARibbonBar.h:93

成员枚举类型说明

◆ RibbonMode

定义当前ribbon 的状态

枚举值
MinimumRibbonMode 

缩小模式

NormalRibbonMode 

正常模式

◆ RibbonStyleFlag

枚举值
RibbonStyleLooseThreeRow 

宽松结构,3行模式

RibbonStyleCompactThreeRow 

紧凑结构,3行模式

RibbonStyleLooseTwoRow 

宽松结构,2行模式

RibbonStyleCompactTwoRow 

紧凑结构,2行模式

构造及析构函数说明

◆ SARibbonBar()

SARibbonBar::SARibbonBar ( QWidget * parent = nullptr)

SARibbonBar构造函数

参数
parent

成员函数说明

◆ actionTriggered

void SARibbonBar::actionTriggered ( QAction * action)
signal

参考QToolBar::actionTriggered的信号

参数
action

◆ activeQuickAccessBar()

SARibbonQuickAccessBar * SARibbonBar::activeQuickAccessBar ( )

激活QuickAccessBar

返回

◆ activeRightButtonGroup()

SARibbonButtonGroupWidget * SARibbonBar::activeRightButtonGroup ( )

激活tabbar右边的按钮群

返回
返回右边的按钮群指针

◆ addCategoryPage() [1/3]

SARibbonCategory * SARibbonBar::addCategoryPage ( const QString & title)

添加一个标签 如果需要删除,直接delete即可,SARibbonBar会对其进行处理

参数
title标签名字,默认情况下SARibbonCategory的object name也被设置为title
返回
返回一个窗口容器,在Category里可以添加其他控件
参见
SARibbonCategory

◆ addCategoryPage() [2/3]

void SARibbonBar::addCategoryPage ( QWidget * category)

qtdesigner专用

参数
category

◆ addCategoryPage() [3/3]

void SARibbonBar::addCategoryPage ( SARibbonCategory * category)

添加一个标签

参数
category

◆ addContextCategory() [1/2]

SARibbonContextCategory * SARibbonBar::addContextCategory ( const QString & title,
const QColor & color = QColor(),
const QVariant & id = QVariant() )

添加上下文标签

上下文标签是特殊时候触发的标签,需要用户手动触发

调用SARibbonContextCategory::addCategoryPage 可在上下文标签中添加SARibbonCategory, 在上下文标签添加的SARibbonCategory,只有在上下文标签显示的时候才会显示

参数
title上下文标签的标题,在Office模式下会显示,在wps模式下不显示。默认情况下SARibbonContextCategory的object name也被设置为title
color上下文标签的颜色,如果指定为空QColor(),将会使用SARibbonBar的默认色系
id上下文标签的id,以便进行查找
返回
返回上下文标签指针
注解
SARibbonBar拥有SARibbonContextCategory的管理权,用户避免在外部直接delete,如果要删除,调用destroyContextCategory 函数

◆ addContextCategory() [2/2]

void SARibbonBar::addContextCategory ( SARibbonContextCategory * context)

添加上下文标签

参数
context

◆ applicationButton()

QAbstractButton * SARibbonBar::applicationButton ( )

返回applicationButton

返回
默认的applicationButton是SARibbonApplicationButton 生成,通过setApplicationButton 可设置为其他button

◆ applicationButtonClicked

void SARibbonBar::applicationButtonClicked ( )
signal

应用按钮点击响应 - 左上角的按钮,通过关联此信号触发应用按钮点击的效果

例如想点击按钮后弹出一个全屏的窗口(如office这些)

◆ categoryByIndex()

SARibbonCategory * SARibbonBar::categoryByIndex ( int index) const

通过索引找到category,如果超过索引范围,会返回nullptr

参数
index索引
返回
如果超过索引范围,会返回nullptr
注解
如果此时有上下文标签,上下文的标签也会返回
通过索引查找的category必须是visible状态的category,如果通过hideCategory 隐藏的标签,通过索引是找不到的
通过categoryByObjectName 可以找到所有加入过的标签, 如果想得到ribbonbar管理的所有标签,可以通过函数categoryPages 得到
参见
categoryIndex categoryByObjectName categoryByName

◆ categoryByName()

SARibbonCategory * SARibbonBar::categoryByName ( const QString & title) const

通过名字查找Category

参数
titleCategory的名字,既标签的标题
返回
如果没有找到,将返回nullptr,如果有重名,将返回第一个查询到的名字,因此,尽量避免重名标签
注解
由于翻译等原因,可能title会变化,因此如果想通过固定内容查找category,应该使用 categoryByObjectName
参见
categoryByObjectName

◆ categoryByObjectName()

SARibbonCategory * SARibbonBar::categoryByObjectName ( const QString & objname) const

通过ObjectName查找Category

参数
objname
返回
如果没有找到,将返回nullptr,如果有同样的ObjectName,将返回第一个查询到的名字,因此,尽量避免ObjectName重名
参见
categoryByName

◆ categoryHeight()

int SARibbonBar::categoryHeight ( ) const

category的高度

返回

◆ categoryIndex()

int SARibbonBar::categoryIndex ( const SARibbonCategory * c) const

获取category的索引

参数
c
返回
如果找不到,返回-1

◆ categoryPages()

QList< SARibbonCategory * > SARibbonBar::categoryPages ( bool getAll = true) const

获取当前显示的所有的SARibbonCategory,包含未显示的SARibbonContextCategory的SARibbonCategory也一并返回

返回

◆ changeEvent()

void SARibbonBar::changeEvent ( QEvent * e)
protectedvirtual

跟踪字体改变

参数
event

◆ contextCategoryColorList()

QList< QColor > SARibbonBar::contextCategoryColorList ( ) const

获取上下文标签的颜色列表

返回

◆ contextCategoryList()

QList< SARibbonContextCategory * > SARibbonBar::contextCategoryList ( ) const

获取所有的上下文标签

返回
返回上下文标签列表

◆ contextCategoryTitleTextColor()

QColor SARibbonBar::contextCategoryTitleTextColor ( ) const

contextCategory 标题的颜色

返回

◆ currentIndex()

int SARibbonBar::currentIndex ( )

返回当前的tab索引

返回
当前的索引

◆ currentRibbonState()

SARibbonBar::RibbonMode SARibbonBar::currentRibbonState ( ) const

当前ribbon的状态(正常|最小化)

返回

◆ currentRibbonStyle()

SARibbonBar::RibbonStyles SARibbonBar::currentRibbonStyle ( ) const

返回当前ribbon的风格

返回
返回当前ribbon的风格

◆ currentRibbonTabChanged

void SARibbonBar::currentRibbonTabChanged ( int index)
signal

标签页变化触发的信号

参数
index

◆ defaultContextCategoryColorList()

QList< QColor > SARibbonBar::defaultContextCategoryColorList ( )
static

获取默认的上下文标签颜色列表

返回

◆ destroyContextCategory()

void SARibbonBar::destroyContextCategory ( SARibbonContextCategory * context)

销毁上下文标签,上下文标签的SARibbonCategory也会随之销毁

参数
context需要销毁的上下文标签指针

1、如果上下文标签显示中,先隐藏

2、删除上下文标签的相关内容

◆ eventFilter()

bool SARibbonBar::eventFilter ( QObject * obj,
QEvent * e )
overrideprotected

SARibbonBar::eventFilter

参数
obj
e
返回

◆ haveShowMinimumModeButton()

bool SARibbonBar::haveShowMinimumModeButton ( ) const

是否显示隐藏ribbon按钮

返回

◆ hideCategory()

void SARibbonBar::hideCategory ( SARibbonCategory * category)

隐藏category,并不会删除或者取走,只是隐藏

参数
category

◆ hideContextCategory()

void SARibbonBar::hideContextCategory ( SARibbonContextCategory * context)

隐藏上下文标签

参数
context上下文标签指针

◆ initHighDpi()

void SARibbonBar::initHighDpi ( )
static

提供高分屏的支持静态函数

注解
此函数需要在main函数,QApplication生成之前调用
int main(int argc, char* argv[]){
QApplication a(argc, argv);
...
}
static void initHighDpi()
提供高分屏的支持静态函数
Definition SARibbonBar.cpp:546

◆ insertCategoryPage() [1/2]

SARibbonCategory * SARibbonBar::insertCategoryPage ( const QString & title,
int index )

添加一个category,category的位置在index,如果当前category数量少于index,将插入到最后

参数
titlecategory的标题
indexcategory的位置
返回

◆ insertCategoryPage() [2/2]

void SARibbonBar::insertCategoryPage ( SARibbonCategory * category,
int index )

插入一个category

参数
categorySARibbonCategory指针
index插入的位置,如果超出范围,将默认插入到最后

◆ isCategoryVisible()

bool SARibbonBar::isCategoryVisible ( const SARibbonCategory * c) const

判断这个category是否在显示状态,也就是tabbar有这个category

参数
category
返回

◆ isCompactStyle() [1/2]

bool SARibbonBar::isCompactStyle ( ) const

判断当前的样式是否为紧凑样式

返回

◆ isCompactStyle() [2/2]

bool SARibbonBar::isCompactStyle ( RibbonStyles s)
static

判断是否是紧凑样式

参数
s
返回
紧凑样式(不带标题栏)返回true,否则就是宽松样式

◆ isContextCategoryVisible()

bool SARibbonBar::isContextCategoryVisible ( SARibbonContextCategory * context)

判断上下文是否在显示状态

参数
context
返回
在显示状态返回true
参见
setContextCategoryVisible

◆ isEnableShowPannelTitle()

bool SARibbonBar::isEnableShowPannelTitle ( ) const

是否pannel显示标题栏

返回

◆ isEnableWordWrap()

bool SARibbonBar::isEnableWordWrap ( ) const

判断是否允许换行

返回

◆ isLooseStyle()

bool SARibbonBar::isLooseStyle ( ) const

判断当前的样式是否为宽松样式

返回

◆ isMinimumMode()

bool SARibbonBar::isMinimumMode ( ) const

当前ribbon是否是隐藏模式

返回

◆ isTabOnTitle()

bool SARibbonBar::isTabOnTitle ( ) const

tab是否在title上面

返回

◆ isThreeRowStyle() [1/2]

bool SARibbonBar::isThreeRowStyle ( ) const

判断当前的样式是否为3行

返回

◆ isThreeRowStyle() [2/2]

bool SARibbonBar::isThreeRowStyle ( RibbonStyles s)
static

判断样式是否为3行

参数
s
返回
3行返回true,返回false代表当前是2行

◆ isTitleVisible()

bool SARibbonBar::isTitleVisible ( ) const

判断标题是否显示

返回

◆ isTwoRowStyle()

bool SARibbonBar::isTwoRowStyle ( ) const

判断当前的样式是否为2行

返回

◆ iterate() [1/2]

bool SARibbonBar::iterate ( FpCategoryIterate fp)

此函数会遍历SARibbonBar下的所有Category,执行函数指针bool(SARibbonCategory*)

参数
fp函数指针返回false则停止迭代
返回
返回false代表没有迭代完所有的category,中途接收到回调函数的false返回而中断迭代

◆ iterate() [2/2]

bool SARibbonBar::iterate ( FpPannelIterate fp)

此函数会遍历SARibbonBar下的所有Category,并迭代所有的pannel,执行函数指针bool(SARibbonPannel*)

参数
fp函数指针返回false则停止迭代
返回
返回false代表没有迭代完所有的category,中途接收到回调函数的false返回而中断迭代

◆ minimumModeAction()

QAction * SARibbonBar::minimumModeAction ( ) const

隐藏ribbon对应的action

返回

◆ minimumModeMainBarHeight()

int SARibbonBar::minimumModeMainBarHeight ( ) const

最小模式下的高度

返回

◆ moveCategory()

void SARibbonBar::moveCategory ( int from,
int to )

移动一个Category从from index到to index

参数
from
to

◆ moveEvent()

void SARibbonBar::moveEvent ( QMoveEvent * e)
protectedvirtual

重写moveevent是为了在移动时调整isPopupMode状态下的stackedContainerWidget位置

参数
event

◆ normalModeMainBarHeight()

int SARibbonBar::normalModeMainBarHeight ( ) const

正常模式下的高度

有可能SARibbonBar::height和mainBarHeight不相等,这种情况发生在RibbonState::MinimumRibbonMode状态下

返回
高度

◆ onCategoryWindowTitleChanged

void SARibbonBar::onCategoryWindowTitleChanged ( const QString & title)
protectedslot

category的名字发生改变触发

参数
title

◆ onContextsCategoryCategoryNameChanged

void SARibbonBar::onContextsCategoryCategoryNameChanged ( SARibbonCategory * category,
const QString & title )
protectedslot

上下文标签管理的标签的名字发生变换

参数
category
title

◆ onCurrentRibbonTabChanged

void SARibbonBar::onCurrentRibbonTabChanged ( int index)
protectedvirtualslot

标签切换触发槽函数

参数
index

◆ onCurrentRibbonTabClicked

void SARibbonBar::onCurrentRibbonTabClicked ( int index)
protectedvirtualslot

ribbon tab bar单击

此实现必须在eventfilter中传递stackedwidget的QEvent::MouseButtonDblClick事件到tabbar中,否则会导致双击变两次单击

单击事件仅用于响应点击同一个tab时

参数
index

◆ onCurrentRibbonTabDoubleClicked

void SARibbonBar::onCurrentRibbonTabDoubleClicked ( int index)
protectedvirtualslot

ribbon tab bar双击

默认情况下双击会切换最小和正常模式

参数
index

◆ onTabMoved

void SARibbonBar::onTabMoved ( int from,
int to )
protectedslot

标签移动的信号

参数
from
to

◆ paintContextCategoryTab()

void SARibbonBar::paintContextCategoryTab ( QPainter & painter,
const QString & title,
const QRect & contextRect,
const QColor & color )
protectedvirtual

绘制上下文标签的背景

参数
painter绘图QPainter
title上下文标签的title
contextRect上下文标签的绘制区域
color上下文标签赋予的颜色

◆ paintTabbarBaseLine()

void SARibbonBar::paintTabbarBaseLine ( QPainter & painter)
protectedvirtual

绘制tabbar下的基准线,这个方法仅仅在office2013模式下需要

参数
painter

◆ paintWindowTitle()

void SARibbonBar::paintWindowTitle ( QPainter & painter,
const QString & title,
const QRect & titleRegion )
protectedvirtual

绘制标题栏

参数
painter
title标题
contextCategoryRegion当前显示的上下文标签的范围,上下文标签是可以遮挡标题栏的,因此需要知道上下文标签的范围 x表示左边界,y表示右边界

◆ pannelLayoutMode()

SARibbonPannel::PannelLayoutMode SARibbonBar::pannelLayoutMode ( ) const

SARibbonPannel的布局模式

返回

◆ pannelSpacing()

int SARibbonBar::pannelSpacing ( ) const

pannel的spacing

返回

◆ pannelTitleHeight()

int SARibbonBar::pannelTitleHeight ( ) const

pannel标题栏的高度

返回

◆ pannelToolButtonIconSize()

QSize SARibbonBar::pannelToolButtonIconSize ( ) const

pannel按钮的icon尺寸,large action不受此尺寸影响

返回

◆ raiseCategory()

void SARibbonBar::raiseCategory ( SARibbonCategory * category)

确保标签显示出来,tab并切换到对应页

参数
category标签指针

◆ removeCategory()

void SARibbonBar::removeCategory ( SARibbonCategory * category)

移除SARibbonCategory

SARibbonBar不会delete SARibbonCategory*,但这个SARibbonCategory会脱离SARibbonBar的管理 表现在tabbar会移除,面板会移除,使用此函数后可以对SARibbonCategory进行delete

参数
category

◆ ribbonAlignment()

SARibbonAlignment SARibbonBar::ribbonAlignment ( ) const

ribbon的对齐方式

返回

◆ ribbonModeChanged

void SARibbonBar::ribbonModeChanged ( SARibbonBar::RibbonMode nowState)
signal

ribbon的状态发生了变化后触发此信号

参数
nowState变更之后的ribbon状态

◆ ribbonStackedWidget()

SARibbonStackedWidget * SARibbonBar::ribbonStackedWidget ( )

ribbonbar内部的StackedWidget 所有的category都放置在StackedWidget中

返回

◆ ribbonStyleChanged

void SARibbonBar::ribbonStyleChanged ( SARibbonBar::RibbonStyles nowStyle)
signal

ribbon的状态发生了变化后触发此信号

参数
nowStyle变更之后的ribbon样式

◆ ribbonTabBar()

SARibbonTabBar * SARibbonBar::ribbonTabBar ( )

返回tabbar

返回
SARibbonTabBar指针
参见
SARibbonTabBar

◆ rightButtonGroup()

SARibbonButtonGroupWidget * SARibbonBar::rightButtonGroup ( )

返回右边的按钮群指针

返回
如果没有创建,返回nullptr

◆ setApplicationButton()

void SARibbonBar::setApplicationButton ( QAbstractButton * btn)

设置applicationButton,如果想隐藏,可以传入nullptr

默认会有一个SARibbonApplicationButton,如果想取消,可传入nullptr,或者自定义的button也可以传入

注解
applicationButton的所有权归SARibbonBar所有,不要在外部对applicationButton进行delete操作
参数
btnapplicationButton指针,可以传入SARibbonApplicationButton, SA已经对SARibbonApplicationButton进行了样式设置

◆ setCategoryHeight()

void SARibbonBar::setCategoryHeight ( int h,
bool resizeByNow = true )

设置category的高度

参数
h
resizeByNow

◆ setContextCategoryColorList()

void SARibbonBar::setContextCategoryColorList ( const QList< QColor > & cls)

设置上下文标签的颜色列表

上下文标签显示的时候,会从颜色列表中取颜色进行标签的渲染

参数
cls

◆ setContextCategoryTitleTextColor()

void SARibbonBar::setContextCategoryTitleTextColor ( const QColor & clr)

设置contextCategory 标题的颜色

参数
clr

◆ setContextCategoryVisible()

void SARibbonBar::setContextCategoryVisible ( SARibbonContextCategory * context,
bool visible )

设置上下文标签的显示状态

上下文标签的当前显示状态可通过 isContextCategoryVisible 进行判断

参数
context上下文标签
visible显示状态,true为显示

◆ setCornerWidgetVisible()

void SARibbonBar::setCornerWidgetVisible ( bool on,
Qt::Corner c = Qt::TopLeftCorner )

设置边角widget可见性,对于mdi窗口,会出现TopLeftCorner和TopRightCorner两个corner widget

参数
on
c

◆ setCurrentIndex()

void SARibbonBar::setCurrentIndex ( int index)

切换到对应标签

参数
index标签索引

◆ setEnableShowPannelTitle()

void SARibbonBar::setEnableShowPannelTitle ( bool on)

设置显示pannel标题

参数
on

◆ setEnableWordWrap()

void SARibbonBar::setEnableWordWrap ( bool on)

设置ribbonbar的按钮文字允许换行

参数
on

◆ setMinimumMode()

void SARibbonBar::setMinimumMode ( bool isMinimum)

设置为最小/正常模式

隐藏模式下,只会显示tabbar,不会显示内容,默认状态是显示模式

默认下双击tabbar会切换隐藏显示模式,如果想禁用此功能,可以重载 onCurrentRibbonTabDoubleClicked 函数,不对函数进行任何处理即可

参数
isMinimum参数为true时,切换为Minimum模式
参见
此函数会改变RibbonState 状态,通过currentRibbonState 函数可以查看当前状态

◆ setPannelLayoutMode()

void SARibbonBar::setPannelLayoutMode ( SARibbonPannel::PannelLayoutMode m)

SARibbonPannel的布局模式设置

参数
m

◆ setPannelSpacing()

void SARibbonBar::setPannelSpacing ( int n)

设置pannel的spacing

参数
n

◆ setPannelTitleHeight()

void SARibbonBar::setPannelTitleHeight ( int h)

设置pannel的高度

参数
h

◆ setPannelToolButtonIconSize()

void SARibbonBar::setPannelToolButtonIconSize ( const QSize & s)

设置pannel按钮的icon尺寸,large action不受此尺寸影响

参数
s

◆ setRibbonAlignment()

void SARibbonBar::setRibbonAlignment ( SARibbonAlignment al)

设置ribbon的对齐方式

参数
al

◆ setRibbonStyle()

void SARibbonBar::setRibbonStyle ( RibbonStyles v)

设置ribbonbar的风格,此函数会重新设置所有元素,包括button的布局方式, 尤其是从三行变到两行的过程,重设的内容较多

注解
此函数会自动触发ResizeEvent,不需要手动调用
默认情况下2行模式不换行,如果想在两行模式换行,在调用SARibbonBar::setRibbonStyle后,再SARibbonToolButton::setEnableWordWrap(true) ,同时再调用updateRibbonElementGeometry()刷新布局
参数
v样式,见SARibbonBar::RibbonStyle

◆ setTabBarBaseLineColor()

void SARibbonBar::setTabBarBaseLineColor ( const QColor & clr)

tabbar 底部会绘制一条线条,此接口定义线条颜色

参数
clr

◆ setTabBarHeight()

void SARibbonBar::setTabBarHeight ( int h,
bool resizeByNow = true )

设置tabbar的高度

用户调用setTabBarHeight后,将使用用户设定的高度,而不使用自动计算的高度,这时tabbar高度不会跟随字体等信息重新计算

注解
注意,在RibbonStyleCompact**模式下,tabbar高度要保证小于等于titlebar高度,否则会显示异常
此函数不会自动刷新,如果需要刷新调用此函数后需要调用updateRibbonGeometry
参数
h

◆ setTabOnTitle()

void SARibbonBar::setTabOnTitle ( bool on)

设置tab在title上面,这样可以省略title区域

参数
on

◆ setTitleBarHeight()

void SARibbonBar::setTitleBarHeight ( int h,
bool resizeByNow = true )

设置标题栏的高度

参见
titleBarHeight
注解
此操作会发射titleBarHeightChanged 信号
参数
h

◆ setTitleVisible()

void SARibbonBar::setTitleVisible ( bool on = false)

设置是否显示标题

参数
on

◆ setWindowButtonGroupSize()

void SARibbonBar::setWindowButtonGroupSize ( const QSize & s)
protected

告知WindowButtonGroup的尺寸

参数
s

◆ setWindowTitleAligment()

void SARibbonBar::setWindowTitleAligment ( Qt::Alignment al)

设置标题的对齐方式

参数
al

◆ setWindowTitleTextColor()

void SARibbonBar::setWindowTitleTextColor ( const QColor & clr)

设置标题的文字颜色

标题时mainwindow的windowTitle,如果要设置标题,直接调用SARibbonMainWindow::setWindowTitle 进行设置

如果不设置标题颜色,默认是SARibbonBar的qss的color属性

参数
clr
注解
此函数不会刷新,刷新请自行调用repaint

◆ showCategory()

void SARibbonBar::showCategory ( SARibbonCategory * category)

显示被隐藏的category

参数
category

◆ showContextCategory()

void SARibbonBar::showContextCategory ( SARibbonContextCategory * context)

显示上下文标签

参数
context上下文标签指针

◆ tabBarBaseLineColor()

QColor SARibbonBar::tabBarBaseLineColor ( ) const

获取tabbar底部基线颜色

返回

◆ tabBarHeight()

int SARibbonBar::tabBarHeight ( ) const

tabBar的高度

返回

◆ titleBarHeight()

int SARibbonBar::titleBarHeight ( ) const

返回标题栏高度

参见
setTitleBarHeight
返回

◆ titleBarHeightChanged

void SARibbonBar::titleBarHeightChanged ( int oldHeight,
int newHeight )
signal

标题栏高度发生了变化的信号

参数
oldHeight
newHeight

◆ updateCategoryTitleToTabName()

void SARibbonBar::updateCategoryTitleToTabName ( )
protected

更新所有的category title对应的tab名

此函数会对所有的category的名字和tab进行匹配,如果匹配不上会重新设置tab名

◆ updateRibbonGeometry()

void SARibbonBar::updateRibbonGeometry ( )

更新ribbon的布局数据,此函数适用于一些关键性尺寸变化,换起ribbon下面元素的布局

注解
此函数调用较慢,避免在高速要求场合调用

直接给一个resizeevent,让所有刷新

◆ versionString()

QString SARibbonBar::versionString ( )
static

获取版本信息

返回
{SA_RIBBON_BAR_VERSION_MAJ}.{SA_RIBBON_BAR_VERSION_MIN}.{SA_RIBBON_BAR_VERSION_PAT}

◆ windowTitleAligment()

Qt::Alignment SARibbonBar::windowTitleAligment ( ) const

获取标题的对齐方式

返回

◆ windowTitleTextColor()

QColor SARibbonBar::windowTitleTextColor ( ) const

获取标题的文字颜色

返回
如果返回的是无效颜色,!QColor::isValid(),说明没有手动设置颜色,颜色将跟随SARibbonBar的qss的文字颜色

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