QtCanpool 3.3.0
载入中...
搜索中...
未找到
QxRibbon::RibbonBar类 参考

RibbonBar 继承 QMenuBar, 在 RibbonWindow 中直接替换了原来的 QMenuBar 更多...

#include <qxribbon/ribbonbar.h>

类 QxRibbon::RibbonBar 继承关系图:

Public 类型

enum  RibbonStyle { OfficeStyle = 0x0000 , WpsLiteStyle = 0x0001 , OfficeStyleTwoRow = 0x0100 | OfficeStyle , WpsLiteStyleTwoRow = 0x0100 | WpsLiteStyle }
 
enum  QuickAccessBarPosition { QABLeftPosition = 1 , QABRightPosition }
 
enum  TabBarPosition { TBLeftPosition , TBCenterPosition }
 

Public 成员函数

 RibbonBar (QWidget *parent=Q_NULLPTR)
 
 ~RibbonBar () override
 
QAbstractButton * applicationButton ()
 
void setApplicationButton (QAbstractButton *btn)
 设置applicationButton,如果想隐藏,可以传入Q_NULLPTR
 
RibbonPage * addPage (const QString &title)
 
void addPage (RibbonPage *page)
 
RibbonPage * insertPage (int index, const QString &title)
 
void insertPage (int index, RibbonPage *page)
 
RibbonPage * page (int index) const
 通过索引找到page,如果超过索引范围,会返回Q_NULLPTR
 
RibbonPage * pageByName (const QString &title) const
 通过名字查找Page
 
RibbonPage * pageByObjectName (const QString &objname) const
 通过ObjectName查找Page
 
QList< RibbonPage * > pages (bool getAll=true) const
 获取当前显示的所有的RibbonPage,包含未显示的RibbonPageContext的RibbonPage也一并返回
 
bool isPageVisible (RibbonPage *page) const
 判断这个page是否在显示状态,也就是tabbar有这个page
 
void showPage (RibbonPage *page)
 显示被隐藏的page
 
void hidePage (RibbonPage *page)
 隐藏page,并不会删除或者取走,只是隐藏
 
void raisePage (RibbonPage *page)
 确保标签显示出来,tab并切换到对应页
 
void removePage (RibbonPage *page)
 移除RibbonPage
 
void clearPages ()
 
void movePage (int from, int to)
 
int pageIndex (RibbonPage *page) const
 
RibbonPageContext * addPageContext (const QString &title, const QColor &color=QColor())
 添加上下文标签
 
void addPageContext (RibbonPageContext *context)
 
void showPageContext (RibbonPageContext *context)
 
void hidePageContext (RibbonPageContext *context)
 
bool isPageContextVisible (RibbonPageContext *context)
 
void setPageContextVisible (RibbonPageContext *context, bool visible)
 
bool isPageContextCoverTab ()
 
void setPageContextCoverTab (bool cover)
 
QList< RibbonPageContext * > pageContextList () const
 
void destroyPageContext (RibbonPageContext *context)
 销毁上下文标签,上下文标签的RibbonPage也会随之销毁
 
void minimize ()
 
bool isMinimized () const
 
void setMinimized (bool flag)
 
bool haveShowMinimumButton () const
 
void showMinimumButton (bool isShow=true)
 
int tabBarHeight () const
 
int titleBarHeight () const
 
RibbonButtonGroup * cornerButtonGroup (Qt::Corner corner=Qt::BottomRightCorner)
 
RibbonQuickAccessBar * quickAccessBar () const
 
void setQuickAccessBarPosition (QuickAccessBarPosition position)
 
QuickAccessBarPosition quickAccessBarPosition () const
 
void setTabBarPosition (TabBarPosition position)
 
TabBarPosition tabBarPosition () const
 
RibbonStyle currentRibbonStyle () const
 
void setRibbonStyle (RibbonStyle v)
 设置ribbonbar的风格,此函数会重新设置所有元素,包括button的布局方式, 尤其是从三行变到两行的过程,重设的内容较多
 
int currentIndex ()
 
void setCurrentIndex (int index)
 
bool isOfficeStyle () const
 
bool isTwoRowStyle () const
 
void setWindowButtonGroup (QWidget *widget)
 
void updateRibbonGeometry ()
 更新ribbon的布局数据,此函数适用于一些关键性尺寸变化,换起ribbon下面元素的布局
 
void updateRibbonTheme ()
 
void resizeRibbon ()
 
Qt::Alignment windowTitleAligment () const
 
void setWindowTitleAligment (Qt::Alignment al)
 
void setWindowTitleVisible (bool visible)
 
QSize sizeHint () const override
 
QSize minimumSizeHint () const override
 
void minimizationChanged (bool minimized)
 
void applicationButtonClicked ()
 
void currentRibbonTabChanged (int index)
 
void ribbonStyleChanged (RibbonStyle nowStyle)
 

Protected 成员函数

bool event (QEvent *event) override
 
bool eventFilter (QObject *obj, QEvent *e) override
 
void paintEvent (QPaintEvent *e) override
 
void resizeEvent (QResizeEvent *e) override
 

详细描述

RibbonBar 继承 QMenuBar, 在 RibbonWindow 中直接替换了原来的 QMenuBar

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

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

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

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

如何生成 ribbon? 先看看一个传统的 MenuBar/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);
}

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

RibbonBar 和传统方法相似,不过相对于传统的 MenuBar/ToolBar, QMenuBar 和 QToolBar 是平级的, Ribbon 是有明显的层级关系,RibbonBar 下面是 RibbonPage , RibbonPage 下面是 RibbonGroup ,RibbonGroup下 面是 RibbonButton , RibbonButton 管理着 QAction

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

RibbonPage *RibbonBar::addPage(const QString &title);
RibbonGroup *RibbonPage::addGroup(const QString &title);
RibbonPage * addPage(const QString &title)
Ribbon 界面适用的 toolButton
group 用于对 ribbon 页窗口中的控件进行分组
Definition ribbongroup.h:29
RibbonButton * addSmallAction(QAction *action)
添加小图标
RibbonButton * addLargeAction(QAction *action)
添加大图标
一项 ribbon tab 页
Definition ribbonpage.h:30
RibbonGroup * addGroup(const QString &title)
添加group

因此生成步骤如下:

// 成员变量
RibbonPage *pageMain;
RibbonGroup *fileGroup;
// 建立ui
void setupRibbonUi()
{
......
// ribbonwindow 为 RibbonWindow
RibbonBar *ribbon = ribbonwindow->ribbonBar();
// 添加一个 Main 标签页
pageMain = ribbon->addPage(QStringLiteral("Main"));
// Main 标签页下添加一个 File Group
fileGroup = pageMain->addGroup(QStringLiteral("FileGroup"));
// 开始为 File Group 添加 action
fileGroup->addLargeAction(actionNew);
fileGroup->addLargeAction(actionOpen);
fileGroup->addLargeAction(actionSave);
fileGroup->addSmallAction(actionImportMesh);
fileGroup->addSmallAction(actionImportGeometry);
}
RibbonBar 继承 QMenuBar, 在 RibbonWindow 中直接替换了原来的 QMenuBar
Definition ribbonbar.h:99

在文件 ribbonbar.h 第 98 行定义.

成员枚举类型说明

◆ QuickAccessBarPosition

枚举值
QABLeftPosition 
QABRightPosition 

在文件 ribbonbar.h 第 116 行定义.

◆ RibbonStyle

枚举值
OfficeStyle 
WpsLiteStyle 
OfficeStyleTwoRow 
WpsLiteStyleTwoRow 

在文件 ribbonbar.h 第 108 行定义.

◆ TabBarPosition

枚举值
TBLeftPosition 
TBCenterPosition 

在文件 ribbonbar.h 第 123 行定义.

构造及析构函数说明

◆ RibbonBar()

QxRibbon::RibbonBar::RibbonBar ( QWidget *  parent = Q_NULLPTR)

在文件 ribbonbar.cpp 第 1115 行定义.

◆ ~RibbonBar()

QxRibbon::RibbonBar::~RibbonBar ( )
override

在文件 ribbonbar.cpp 第 1128 行定义.

成员函数说明

◆ addPage() [1/2]

RibbonPage * QxRibbon::RibbonBar::addPage ( const QString &  title)

在文件 ribbonbar.cpp 第 1155 行定义.

◆ addPage() [2/2]

void QxRibbon::RibbonBar::addPage ( RibbonPage *  page)

在文件 ribbonbar.cpp 第 1160 行定义.

◆ addPageContext() [1/2]

RibbonPageContext * QxRibbon::RibbonBar::addPageContext ( const QString &  title,
const QColor &  color = QColor() 
)

添加上下文标签

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

调用RibbonPageContext::addPage 可在上下文标签中添加RibbonPage, 在上下文标签添加的RibbonPage,只有在上下文标签显示的时候才会显示

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

在文件 ribbonbar.cpp 第 1422 行定义.

◆ addPageContext() [2/2]

void QxRibbon::RibbonBar::addPageContext ( RibbonPageContext *  context)

在文件 ribbonbar.cpp 第 1434 行定义.

◆ applicationButton()

QAbstractButton * QxRibbon::RibbonBar::applicationButton ( )

在文件 ribbonbar.cpp 第 1133 行定义.

◆ applicationButtonClicked()

void QxRibbon::RibbonBar::applicationButtonClicked ( )

◆ clearPages()

void QxRibbon::RibbonBar::clearPages ( )

在文件 ribbonbar.cpp 第 1385 行定义.

◆ cornerButtonGroup()

RibbonButtonGroup * QxRibbon::RibbonBar::cornerButtonGroup ( Qt::Corner  corner = Qt::BottomRightCorner)

在文件 ribbonbar.cpp 第 1633 行定义.

◆ currentIndex()

int QxRibbon::RibbonBar::currentIndex ( )

在文件 ribbonbar.cpp 第 1757 行定义.

◆ currentRibbonStyle()

RibbonBar::RibbonStyle QxRibbon::RibbonBar::currentRibbonStyle ( ) const

在文件 ribbonbar.cpp 第 1712 行定义.

◆ currentRibbonTabChanged()

void QxRibbon::RibbonBar::currentRibbonTabChanged ( int  index)

◆ destroyPageContext()

void QxRibbon::RibbonBar::destroyPageContext ( RibbonPageContext *  context)

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

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

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

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

在文件 ribbonbar.cpp 第 1546 行定义.

◆ event()

bool QxRibbon::RibbonBar::event ( QEvent *  event)
overrideprotected

在文件 ribbonbar.cpp 第 1854 行定义.

◆ eventFilter()

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

在文件 ribbonbar.cpp 第 1881 行定义.

◆ haveShowMinimumButton()

bool QxRibbon::RibbonBar::haveShowMinimumButton ( ) const

在文件 ribbonbar.cpp 第 1589 行定义.

◆ hidePage()

void QxRibbon::RibbonBar::hidePage ( RibbonPage *  page)

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

参数
page

在文件 ribbonbar.cpp 第 1321 行定义.

◆ hidePageContext()

void QxRibbon::RibbonBar::hidePageContext ( RibbonPageContext *  context)

在文件 ribbonbar.cpp 第 1483 行定义.

◆ insertPage() [1/2]

RibbonPage * QxRibbon::RibbonBar::insertPage ( int  index,
const QString &  title 
)

在文件 ribbonbar.cpp 第 1165 行定义.

◆ insertPage() [2/2]

void QxRibbon::RibbonBar::insertPage ( int  index,
RibbonPage *  page 
)

在文件 ribbonbar.cpp 第 1174 行定义.

◆ isMinimized()

bool QxRibbon::RibbonBar::isMinimized ( ) const

在文件 ribbonbar.cpp 第 1573 行定义.

◆ isOfficeStyle()

bool QxRibbon::RibbonBar::isOfficeStyle ( ) const

在文件 ribbonbar.cpp 第 1769 行定义.

◆ isPageContextCoverTab()

bool QxRibbon::RibbonBar::isPageContextCoverTab ( )

在文件 ribbonbar.cpp 第 1524 行定义.

◆ isPageContextVisible()

bool QxRibbon::RibbonBar::isPageContextVisible ( RibbonPageContext *  context)

在文件 ribbonbar.cpp 第 1506 行定义.

◆ isPageVisible()

bool QxRibbon::RibbonBar::isPageVisible ( RibbonPage *  page) const

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

参数
page
返回

在文件 ribbonbar.cpp 第 1290 行定义.

◆ isTwoRowStyle()

bool QxRibbon::RibbonBar::isTwoRowStyle ( ) const

在文件 ribbonbar.cpp 第 1775 行定义.

◆ minimizationChanged()

void QxRibbon::RibbonBar::minimizationChanged ( bool  minimized)

◆ minimize()

void QxRibbon::RibbonBar::minimize ( )

在文件 ribbonbar.cpp 第 1568 行定义.

◆ minimumSizeHint()

QSize QxRibbon::RibbonBar::minimumSizeHint ( ) const
override

在文件 ribbonbar.cpp 第 1849 行定义.

◆ movePage()

void QxRibbon::RibbonBar::movePage ( int  from,
int  to 
)

在文件 ribbonbar.cpp 第 1393 行定义.

◆ page()

RibbonPage * QxRibbon::RibbonBar::page ( int  index) const

通过索引找到page,如果超过索引范围,会返回Q_NULLPTR

参数
index索引
返回
如果超过索引范围,会返回Q_NULLPTR
注解
如果此时有上下文标签,上下文的标签也会返回
通过索引查找的page必须是visible状态的page,如果通过hidePage 隐藏的标签,通过索引是找不到的
通过pageByObjectName 可以找到所有加入过的标签, 如果想得到ribbonbar管理的所有标签,可以通过函数pages 得到
参见
pageIndex pageByObjectName pageByName

在文件 ribbonbar.cpp 第 1208 行定义.

◆ pageByName()

RibbonPage * QxRibbon::RibbonBar::pageByName ( const QString &  title) const

通过名字查找Page

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

在文件 ribbonbar.cpp 第 1227 行定义.

◆ pageByObjectName()

RibbonPage * QxRibbon::RibbonBar::pageByObjectName ( const QString &  objname) const

通过ObjectName查找Page

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

在文件 ribbonbar.cpp 第 1247 行定义.

◆ pageContextList()

QList< RibbonPageContext * > QxRibbon::RibbonBar::pageContextList ( ) const

在文件 ribbonbar.cpp 第 1536 行定义.

◆ pageIndex()

int QxRibbon::RibbonBar::pageIndex ( RibbonPage *  page) const

在文件 ribbonbar.cpp 第 1402 行定义.

◆ pages()

QList< RibbonPage * > QxRibbon::RibbonBar::pages ( bool  getAll = true) const

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

返回

在文件 ribbonbar.cpp 第 1266 行定义.

◆ paintEvent()

void QxRibbon::RibbonBar::paintEvent ( QPaintEvent *  e)
overrideprotected

在文件 ribbonbar.cpp 第 1920 行定义.

◆ quickAccessBar()

RibbonQuickAccessBar * QxRibbon::RibbonBar::quickAccessBar ( ) const

在文件 ribbonbar.cpp 第 1672 行定义.

◆ quickAccessBarPosition()

RibbonBar::QuickAccessBarPosition QxRibbon::RibbonBar::quickAccessBarPosition ( ) const

在文件 ribbonbar.cpp 第 1690 行定义.

◆ raisePage()

void QxRibbon::RibbonBar::raisePage ( RibbonPage *  page)

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

参数
page标签指针

在文件 ribbonbar.cpp 第 1345 行定义.

◆ removePage()

void QxRibbon::RibbonBar::removePage ( RibbonPage *  page)

移除RibbonPage

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

参数
page

在文件 ribbonbar.cpp 第 1362 行定义.

◆ resizeEvent()

void QxRibbon::RibbonBar::resizeEvent ( QResizeEvent *  e)
overrideprotected

在文件 ribbonbar.cpp 第 1937 行定义.

◆ resizeRibbon()

void QxRibbon::RibbonBar::resizeRibbon ( )

在文件 ribbonbar.cpp 第 1808 行定义.

◆ ribbonStyleChanged()

void QxRibbon::RibbonBar::ribbonStyleChanged ( RibbonStyle  nowStyle)

◆ setApplicationButton()

void QxRibbon::RibbonBar::setApplicationButton ( QAbstractButton *  btn)

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

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

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

在文件 ribbonbar.cpp 第 1148 行定义.

◆ setCurrentIndex()

void QxRibbon::RibbonBar::setCurrentIndex ( int  index)

在文件 ribbonbar.cpp 第 1763 行定义.

◆ setMinimized()

void QxRibbon::RibbonBar::setMinimized ( bool  flag)

在文件 ribbonbar.cpp 第 1579 行定义.

◆ setPageContextCoverTab()

void QxRibbon::RibbonBar::setPageContextCoverTab ( bool  cover)

在文件 ribbonbar.cpp 第 1530 行定义.

◆ setPageContextVisible()

void QxRibbon::RibbonBar::setPageContextVisible ( RibbonPageContext *  context,
bool  visible 
)

在文件 ribbonbar.cpp 第 1512 行定义.

◆ setQuickAccessBarPosition()

void QxRibbon::RibbonBar::setQuickAccessBarPosition ( QuickAccessBarPosition  position)

在文件 ribbonbar.cpp 第 1678 行定义.

◆ setRibbonStyle()

void QxRibbon::RibbonBar::setRibbonStyle ( RibbonBar::RibbonStyle  v)

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

注解
此函数会自动触发ResizeEvent,不需要手动调用
参数
v样式,见RibbonBar::RibbonStyle

在文件 ribbonbar.cpp 第 1724 行定义.

◆ setTabBarPosition()

void QxRibbon::RibbonBar::setTabBarPosition ( RibbonBar::TabBarPosition  position)

在文件 ribbonbar.cpp 第 1696 行定义.

◆ setWindowButtonGroup()

void QxRibbon::RibbonBar::setWindowButtonGroup ( QWidget *  widget)

在文件 ribbonbar.cpp 第 1781 行定义.

◆ setWindowTitleAligment()

void QxRibbon::RibbonBar::setWindowTitleAligment ( Qt::Alignment  al)

在文件 ribbonbar.cpp 第 1822 行定义.

◆ setWindowTitleVisible()

void QxRibbon::RibbonBar::setWindowTitleVisible ( bool  visible)

在文件 ribbonbar.cpp 第 1828 行定义.

◆ showMinimumButton()

void QxRibbon::RibbonBar::showMinimumButton ( bool  isShow = true)

在文件 ribbonbar.cpp 第 1595 行定义.

◆ showPage()

void QxRibbon::RibbonBar::showPage ( RibbonPage *  page)

显示被隐藏的page

参数
page

在文件 ribbonbar.cpp 第 1301 行定义.

◆ showPageContext()

void QxRibbon::RibbonBar::showPageContext ( RibbonPageContext *  context)

在文件 ribbonbar.cpp 第 1448 行定义.

◆ sizeHint()

QSize QxRibbon::RibbonBar::sizeHint ( ) const
override

在文件 ribbonbar.cpp 第 1835 行定义.

◆ tabBarHeight()

int QxRibbon::RibbonBar::tabBarHeight ( ) const

在文件 ribbonbar.cpp 第 1623 行定义.

◆ tabBarPosition()

RibbonBar::TabBarPosition QxRibbon::RibbonBar::tabBarPosition ( ) const

在文件 ribbonbar.cpp 第 1706 行定义.

◆ titleBarHeight()

int QxRibbon::RibbonBar::titleBarHeight ( ) const

在文件 ribbonbar.cpp 第 1628 行定义.

◆ updateRibbonGeometry()

void QxRibbon::RibbonBar::updateRibbonGeometry ( )

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

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

在文件 ribbonbar.cpp 第 1792 行定义.

◆ updateRibbonTheme()

void QxRibbon::RibbonBar::updateRibbonTheme ( )

在文件 ribbonbar.cpp 第 1802 行定义.

◆ windowTitleAligment()

Qt::Alignment QxRibbon::RibbonBar::windowTitleAligment ( ) const

在文件 ribbonbar.cpp 第 1816 行定义.


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