|
QtCanpool 3.3.0
|
RibbonBar 继承 QMenuBar, 在 RibbonWindow 中直接替换了原来的 QMenuBar 更多...
#include <qxribbon/ribbonbar.h>

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 的风格:
RibbonBar 参考 office 和 wps,提供了四种风格的 Ribbon 模式, RibbonBar::RibbonStyle
如果想 ribbon 占用的空间足够小,WpsLiteStyleTwoRow 模式能比 OfficeStyle 节省 35% 的高度空间
如何生成 ribbon? 先看看一个传统的 MenuBar/ToolBar 是如何生成的:
传统的 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 只需以下几个函数:
因此生成步骤如下:
在文件 ribbonbar.h 第 98 行定义.
| 枚举值 | |
|---|---|
| QABLeftPosition | |
| QABRightPosition | |
在文件 ribbonbar.h 第 116 行定义.
| 枚举值 | |
|---|---|
| OfficeStyle | |
| WpsLiteStyle | |
| OfficeStyleTwoRow | |
| WpsLiteStyleTwoRow | |
在文件 ribbonbar.h 第 108 行定义.
| 枚举值 | |
|---|---|
| TBLeftPosition | |
| TBCenterPosition | |
在文件 ribbonbar.h 第 123 行定义.
| QxRibbon::RibbonBar::RibbonBar | ( | QWidget * | parent = Q_NULLPTR | ) |
在文件 ribbonbar.cpp 第 1115 行定义.
|
override |
在文件 ribbonbar.cpp 第 1128 行定义.
| RibbonPage * QxRibbon::RibbonBar::addPage | ( | const QString & | title | ) |
在文件 ribbonbar.cpp 第 1155 行定义.
| void QxRibbon::RibbonBar::addPage | ( | RibbonPage * | page | ) |
在文件 ribbonbar.cpp 第 1160 行定义.
| 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.cpp 第 1422 行定义.
| void QxRibbon::RibbonBar::addPageContext | ( | RibbonPageContext * | context | ) |
在文件 ribbonbar.cpp 第 1434 行定义.
| QAbstractButton * QxRibbon::RibbonBar::applicationButton | ( | ) |
在文件 ribbonbar.cpp 第 1133 行定义.
| void QxRibbon::RibbonBar::applicationButtonClicked | ( | ) |
| void QxRibbon::RibbonBar::clearPages | ( | ) |
在文件 ribbonbar.cpp 第 1385 行定义.
| RibbonButtonGroup * QxRibbon::RibbonBar::cornerButtonGroup | ( | Qt::Corner | corner = Qt::BottomRightCorner | ) |
在文件 ribbonbar.cpp 第 1633 行定义.
| int QxRibbon::RibbonBar::currentIndex | ( | ) |
在文件 ribbonbar.cpp 第 1757 行定义.
| RibbonBar::RibbonStyle QxRibbon::RibbonBar::currentRibbonStyle | ( | ) | const |
在文件 ribbonbar.cpp 第 1712 行定义.
| void QxRibbon::RibbonBar::currentRibbonTabChanged | ( | int | index | ) |
| void QxRibbon::RibbonBar::destroyPageContext | ( | RibbonPageContext * | context | ) |
销毁上下文标签,上下文标签的RibbonPage也会随之销毁
| context | 需要销毁的上下文标签指针 |
1、如果上下文标签显示中,先隐藏
2、删除上下文标签的相关内容
在文件 ribbonbar.cpp 第 1546 行定义.
|
overrideprotected |
在文件 ribbonbar.cpp 第 1854 行定义.
|
overrideprotected |
在文件 ribbonbar.cpp 第 1881 行定义.
| bool QxRibbon::RibbonBar::haveShowMinimumButton | ( | ) | const |
在文件 ribbonbar.cpp 第 1589 行定义.
| void QxRibbon::RibbonBar::hidePage | ( | RibbonPage * | page | ) |
| void QxRibbon::RibbonBar::hidePageContext | ( | RibbonPageContext * | context | ) |
在文件 ribbonbar.cpp 第 1483 行定义.
| RibbonPage * QxRibbon::RibbonBar::insertPage | ( | int | index, |
| const QString & | title | ||
| ) |
在文件 ribbonbar.cpp 第 1165 行定义.
| void QxRibbon::RibbonBar::insertPage | ( | int | index, |
| RibbonPage * | page | ||
| ) |
在文件 ribbonbar.cpp 第 1174 行定义.
| bool QxRibbon::RibbonBar::isMinimized | ( | ) | const |
在文件 ribbonbar.cpp 第 1573 行定义.
| bool QxRibbon::RibbonBar::isOfficeStyle | ( | ) | const |
在文件 ribbonbar.cpp 第 1769 行定义.
| bool QxRibbon::RibbonBar::isPageContextCoverTab | ( | ) |
在文件 ribbonbar.cpp 第 1524 行定义.
| bool QxRibbon::RibbonBar::isPageContextVisible | ( | RibbonPageContext * | context | ) |
在文件 ribbonbar.cpp 第 1506 行定义.
| bool QxRibbon::RibbonBar::isPageVisible | ( | RibbonPage * | page | ) | const |
| bool QxRibbon::RibbonBar::isTwoRowStyle | ( | ) | const |
在文件 ribbonbar.cpp 第 1775 行定义.
| void QxRibbon::RibbonBar::minimizationChanged | ( | bool | minimized | ) |
| void QxRibbon::RibbonBar::minimize | ( | ) |
在文件 ribbonbar.cpp 第 1568 行定义.
|
override |
在文件 ribbonbar.cpp 第 1849 行定义.
| void QxRibbon::RibbonBar::movePage | ( | int | from, |
| int | to | ||
| ) |
在文件 ribbonbar.cpp 第 1393 行定义.
| RibbonPage * QxRibbon::RibbonBar::page | ( | int | index | ) | const |
通过索引找到page,如果超过索引范围,会返回Q_NULLPTR
| index | 索引 |
在文件 ribbonbar.cpp 第 1208 行定义.
| RibbonPage * QxRibbon::RibbonBar::pageByName | ( | const QString & | title | ) | const |
通过名字查找Page
| title | Page的名字,既标签的标题 |
在文件 ribbonbar.cpp 第 1227 行定义.
| RibbonPage * QxRibbon::RibbonBar::pageByObjectName | ( | const QString & | objname | ) | const |
通过ObjectName查找Page
| objname |
在文件 ribbonbar.cpp 第 1247 行定义.
| QList< RibbonPageContext * > QxRibbon::RibbonBar::pageContextList | ( | ) | const |
在文件 ribbonbar.cpp 第 1536 行定义.
| int QxRibbon::RibbonBar::pageIndex | ( | RibbonPage * | page | ) | const |
在文件 ribbonbar.cpp 第 1402 行定义.
| QList< RibbonPage * > QxRibbon::RibbonBar::pages | ( | bool | getAll = true | ) | const |
|
overrideprotected |
在文件 ribbonbar.cpp 第 1920 行定义.
| RibbonQuickAccessBar * QxRibbon::RibbonBar::quickAccessBar | ( | ) | const |
在文件 ribbonbar.cpp 第 1672 行定义.
| RibbonBar::QuickAccessBarPosition QxRibbon::RibbonBar::quickAccessBarPosition | ( | ) | const |
在文件 ribbonbar.cpp 第 1690 行定义.
| void QxRibbon::RibbonBar::raisePage | ( | RibbonPage * | page | ) |
| void QxRibbon::RibbonBar::removePage | ( | RibbonPage * | page | ) |
移除RibbonPage
RibbonBar不会delete RibbonPage*,但这个RibbonPage会脱离RibbonBar的管理 表现在tabbar会移除,面板会移除,使用此函数后可以对RibbonPage进行delete
| page |
在文件 ribbonbar.cpp 第 1362 行定义.
|
overrideprotected |
在文件 ribbonbar.cpp 第 1937 行定义.
| void QxRibbon::RibbonBar::resizeRibbon | ( | ) |
在文件 ribbonbar.cpp 第 1808 行定义.
| void QxRibbon::RibbonBar::ribbonStyleChanged | ( | RibbonStyle | nowStyle | ) |
| void QxRibbon::RibbonBar::setApplicationButton | ( | QAbstractButton * | btn | ) |
设置applicationButton,如果想隐藏,可以传入Q_NULLPTR
默认会有一个RibbonApplicationButton,如果想取消,可传入Q_NULLPTR,或者自定义的button也可以传入
| btn | applicationButton指针,可以传入 RibbonApplicationButton , 已经对RibbonApplicationButton进行了样式设置 |
在文件 ribbonbar.cpp 第 1148 行定义.
| void QxRibbon::RibbonBar::setCurrentIndex | ( | int | index | ) |
在文件 ribbonbar.cpp 第 1763 行定义.
| void QxRibbon::RibbonBar::setMinimized | ( | bool | flag | ) |
在文件 ribbonbar.cpp 第 1579 行定义.
| void QxRibbon::RibbonBar::setPageContextCoverTab | ( | bool | cover | ) |
在文件 ribbonbar.cpp 第 1530 行定义.
| void QxRibbon::RibbonBar::setPageContextVisible | ( | RibbonPageContext * | context, |
| bool | visible | ||
| ) |
在文件 ribbonbar.cpp 第 1512 行定义.
| void QxRibbon::RibbonBar::setQuickAccessBarPosition | ( | QuickAccessBarPosition | position | ) |
在文件 ribbonbar.cpp 第 1678 行定义.
| void QxRibbon::RibbonBar::setRibbonStyle | ( | RibbonBar::RibbonStyle | v | ) |
设置ribbonbar的风格,此函数会重新设置所有元素,包括button的布局方式, 尤其是从三行变到两行的过程,重设的内容较多
| v | 样式,见RibbonBar::RibbonStyle |
在文件 ribbonbar.cpp 第 1724 行定义.
| void QxRibbon::RibbonBar::setTabBarPosition | ( | RibbonBar::TabBarPosition | position | ) |
在文件 ribbonbar.cpp 第 1696 行定义.
| void QxRibbon::RibbonBar::setWindowButtonGroup | ( | QWidget * | widget | ) |
在文件 ribbonbar.cpp 第 1781 行定义.
| void QxRibbon::RibbonBar::setWindowTitleAligment | ( | Qt::Alignment | al | ) |
在文件 ribbonbar.cpp 第 1822 行定义.
| void QxRibbon::RibbonBar::setWindowTitleVisible | ( | bool | visible | ) |
在文件 ribbonbar.cpp 第 1828 行定义.
| void QxRibbon::RibbonBar::showMinimumButton | ( | bool | isShow = true | ) |
在文件 ribbonbar.cpp 第 1595 行定义.
| void QxRibbon::RibbonBar::showPage | ( | RibbonPage * | page | ) |
| void QxRibbon::RibbonBar::showPageContext | ( | RibbonPageContext * | context | ) |
在文件 ribbonbar.cpp 第 1448 行定义.
|
override |
在文件 ribbonbar.cpp 第 1835 行定义.
| int QxRibbon::RibbonBar::tabBarHeight | ( | ) | const |
在文件 ribbonbar.cpp 第 1623 行定义.
| RibbonBar::TabBarPosition QxRibbon::RibbonBar::tabBarPosition | ( | ) | const |
在文件 ribbonbar.cpp 第 1706 行定义.
| int QxRibbon::RibbonBar::titleBarHeight | ( | ) | const |
在文件 ribbonbar.cpp 第 1628 行定义.
| void QxRibbon::RibbonBar::updateRibbonGeometry | ( | ) |
| void QxRibbon::RibbonBar::updateRibbonTheme | ( | ) |
在文件 ribbonbar.cpp 第 1802 行定义.
| Qt::Alignment QxRibbon::RibbonBar::windowTitleAligment | ( | ) | const |
在文件 ribbonbar.cpp 第 1816 行定义.