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

pannel页窗口,pannel是ribbon的面板用于承放控件 更多...

#include <SARibbonPannel.h>

类 SARibbonPannel 继承关系图:

class  PrivateData
 

Public 类型

enum  PannelLayoutMode { ThreeRowMode , TwoRowMode }
 
using FpRibbonToolButtonIterate = std::function< bool(SARibbonToolButton*) >
 

信号

void actionTriggered (QAction *action)
 等同于QToolBar::actionTriggered
 
void pannelNameChanged (const QString &n)
 pannel的标题发生了改变
 

Public 成员函数

 SARibbonPannel (QWidget *parent=nullptr)
 
 SARibbonPannel (const QString &name, QWidget *parent=nullptr)
 
void addAction (QAction *action, SARibbonPannelItem::RowProportion rp)
 添加action
 
void addAction (QAction *act, QToolButton::ToolButtonPopupMode popMode, SARibbonPannelItem::RowProportion rp=SARibbonPannelItem::Large)
 添加一个action
 
void addLargeAction (QAction *action)
 添加大图标
 
void addMediumAction (QAction *action)
 在三栏模式下,强制加为2栏action
 
void addSmallAction (QAction *action)
 添加小图标
 
void addSmallAction (QAction *action, QToolButton::ToolButtonPopupMode popMode)
 
void addLargeAction (QAction *action, QToolButton::ToolButtonPopupMode popMode)
 
void addMediumAction (QAction *action, QToolButton::ToolButtonPopupMode popMode)
 
QAction * addAction (const QString &text, const QIcon &icon, QToolButton::ToolButtonPopupMode popMode, SARibbonPannelItem::RowProportion rp=SARibbonPannelItem::Large)
 生成并添加一个action
 
void addMenu (QMenu *menu, SARibbonPannelItem::RowProportion rp, QToolButton::ToolButtonPopupMode popMode=QToolButton::InstantPopup)
 添加一个普通菜单
 
void addLargeMenu (QMenu *menu, QToolButton::ToolButtonPopupMode popMode=QToolButton::InstantPopup)
 
void addSmallMenu (QMenu *menu, QToolButton::ToolButtonPopupMode popMode=QToolButton::InstantPopup)
 
QAction * addWidget (QWidget *w, SARibbonPannelItem::RowProportion rp)
 添加窗口
 
QAction * addSmallWidget (QWidget *w)
 添加窗口,占用ribbon的一行
 
QAction * addMediumWidget (QWidget *w)
 添加窗口,占用ribbon的一行
 
QAction * addLargeWidget (QWidget *w)
 添加窗口,占用所有行
 
SARibbonGalleryaddGallery (bool expanding=true)
 SARibbonPannel::addGallery
 
QAction * addSeparator ()
 添加分割线
 
SARibbonToolButtonactionToRibbonToolButton (QAction *action)
 从pannel中把action对应的button提取出来,如果action没有对应的button,就返回nullptr
 
void setOptionAction (QAction *action)
 添加操作action,如果要去除,传入nullptr指针即可,SARibbonPannel不会对QAction的所有权进行管理
 
bool isHaveOptionAction () const
 判断是否存在OptionAction
 
QList< SARibbonToolButton * > ribbonToolButtons () const
 获取pannel下面的所有toolbutton
 
PannelLayoutMode pannelLayoutMode () const
 
void setPannelLayoutMode (PannelLayoutMode mode)
 设置PannelLayoutMode
 
void resetToolButtonSize ()
 重置按钮的尺寸,在布局改变后(尤其高度变更),按钮的尺寸需要手动变更
 
bool isTwoRow () const
 
void setExpanding (bool isExpanding=true)
 把pannel设置为扩展模式,此时会撑大水平区域
 
bool isExpanding () const
 判断此pannel是否为(水平)扩展模式
 
void setTitleHeight (int h)
 设置标题栏的高度
 
int titleHeight () const
 标题栏高度
 
bool isEnableShowTitle () const
 判断是否显示标题,只有标题的高度被设置,才会显示标题
 
void setEnableShowTitle (bool on)
 是否显示标题,显示标题后,标题的高度需要设置,默认高度为15
 
int actionIndex (QAction *act) const
 action对应的布局index,此操作一般用于移动,其他意义不大
 
void moveAction (int from, int to)
 移动action
 
bool isCanCustomize () const
 判断是否可以自定义
 
void setCanCustomize (bool b)
 设置是否可以自定义
 
QString pannelName () const
 pannel名称
 
void setPannelName (const QString &title)
 pannel的名称
 
int largeButtonHeight () const
 获取大图标的高度
 
const QList< SARibbonPannelItem * > & ribbonPannelItem () const
 获取布局item
 
SARibbonPannelLayoutpannelLayout () const
 获取pannel layout
 
void updateItemGeometry ()
 更新布局
 
SARibbonCategorycategory () const
 获取category指针,如果没有parent,或者不在category管理,返回nullptr
 
SARibbonBarribbonBar () const
 获取ribbonBar指针,如果没有返回nullptr
 
void setSpacing (int n)
 设置按钮之间的间隔
 
int spacing () const
 按钮之间的间隔
 
virtual QSize sizeHint () const Q_DECL_OVERRIDE
 
virtual QSize minimumSizeHint () const Q_DECL_OVERRIDE
 
void setToolButtonIconSize (const QSize &s)
 
QSize toolButtonIconSize () const
 
bool iterate (FpRibbonToolButtonIterate fp)
 遍历SARibbonPannel下的所有RibbonToolButton,执行函数指针(bool(SARibbonRibbonToolButton*)),函数指针返回false则停止迭代
 

静态 Public 成员函数

static int pannelHeightHint (const QFontMetrics &fm, PannelLayoutMode layMode, int pannelTitleHeight)
 pannel高度推荐
 
static void setActionRowProportionProperty (QAction *action, SARibbonPannelItem::RowProportion rp)
 把action的行属性设置进action中,action自身携带了行属性
 
static SARibbonPannelItem::RowProportion getActionRowProportionProperty (QAction *action)
 获取action的行属性
 
static void setActionToolButtonPopupModeProperty (QAction *action, QToolButton::ToolButtonPopupMode popMode)
 设置action的ToolButtonPopupMode属性
 
static QToolButton::ToolButtonPopupMode getActionToolButtonPopupModeProperty (QAction *action)
 获取action的ToolButtonPopupMode属性
 
static void setActionToolButtonStyleProperty (QAction *action, Qt::ToolButtonStyle buttonStyle)
 设置action的ToolButtonStyle属性
 
static Qt::ToolButtonStyle getActionToolButtonStyleProperty (QAction *action)
 获取action的ToolButtonStyle属性
 

Protected 成员函数

virtual bool event (QEvent *e) Q_DECL_OVERRIDE
 
virtual void actionEvent (QActionEvent *e) Q_DECL_OVERRIDE
 处理action的事件
 
virtual void changeEvent (QEvent *e) Q_DECL_OVERRIDE
 追踪字体改变事件,把新字体设置到childwidget中
 

属性

bool isCanCustomize
 
bool isExpanding
 
QString pannelName
 

友元

class SARibbonCategory
 
class SARibbonCategoryPrivate
 
class SARibbonCustomizeWidgetPrivate
 
class SARibbonPannelLayout
 

详细描述

pannel页窗口,pannel是ribbon的面板用于承放控件

ribbon的pannel分为两行模式和三行模式,以office为代表的ribbon为3行模式,以WPS为代表的“紧凑派”就是2行模式, SARibbon可通过SARibbonBar的SARibbonBar::RibbonStyle 来指定模式(通过函数SARibbonBar::setRibbonStyle )

在pannel中,可以通过setExpanding 函数指定pannel水平扩展,如果pannel里面没有能水平扩展的控件,将会留白,因此, 建议在pannel里面有水平扩展的控件如(SARibbonGallery )才指定这个函数

pannel的布局通过SARibbonPannelLayout 来实现,如果有其他布局,可以通过继承SARibbonElementCreateDelegate::createRibbonPannel 函数返回带有自己布局的pannel,但你必须继承对应的虚函数

成员枚举类型说明

◆ PannelLayoutMode

枚举值
ThreeRowMode 

三行布局模式,office就是三行布局模式,pannel能布置3行小toolbutton,默认模式

TwoRowMode 

两行布局模式,wps的后续布局模式就是两行布局模式,pannel能布置2行小toolbutton

成员函数说明

◆ actionEvent()

void SARibbonPannel::actionEvent ( QActionEvent * e)
protectedvirtual

处理action的事件

这里处理了ActionAdded,ActionChanged,ActionRemoved三个事件

ActionAdded时向布局请求,添加action,布局中同时触发了SARibbonPannelLayout::createItem 函数 此函数用于生成窗口,例如QRibbonToolButton

ActionChanged时会让布局重新计算尺寸,并向category请求重新布局,有可能category的所有要重新调整尺寸

ActionRemoved会移除布局管理的QLayoutItem,并进行内存清理,这时窗口也会隐藏,同时销毁

参数
e
注解
所有action事件都会向category请求重新布局

强制发送一个resizeevent,让Category能重绘,如果没有这个函数,发现Category的layout虽然设置了invalidate(标记缓存失效) 但并没有按顺序在pannel尺寸更新后更新Category的尺寸,导致有些pannel的尺寸识别出现异常 重打印信息上看,pannel的尺寸有进行更新,category的尺寸也进行了更新,但更新的次数和调用invalidate的次数不一样,需要手动触发ResizeEvent 尝试过调用QEvent::LayoutRequest没有效果:

QEvent* el = new QEvent(QEvent::LayoutRequest);
QApplication::postEvent(parw, el);

调用parw->updateGeometry();也没有效果,目前看使用resizeevent是最有效果的

◆ actionIndex()

int SARibbonPannel::actionIndex ( QAction * act) const

action对应的布局index,此操作一般用于移动,其他意义不大

参数
act
返回
没有查到返回-1

◆ actionToRibbonToolButton()

SARibbonToolButton * SARibbonPannel::actionToRibbonToolButton ( QAction * action)

从pannel中把action对应的button提取出来,如果action没有对应的button,就返回nullptr

参数
action
返回
如果action没有对应的button,就返回nullptr

◆ actionTriggered

void SARibbonPannel::actionTriggered ( QAction * action)
signal

等同于QToolBar::actionTriggered

参数
action

◆ addAction() [1/3]

QAction * SARibbonPannel::addAction ( const QString & text,
const QIcon & icon,
QToolButton::ToolButtonPopupMode popMode,
SARibbonPannelItem::RowProportion rp = SARibbonPannelItem::Large )

生成并添加一个action

如果不对此action做操作,SARibbonPannel将管理此action

注解
action的父对象将设置为SARibbonPannel,SARibbonPannel在删除时将会删除子对象,会把这个action也删除, 如果不想此action也删除,需要对action重新设置父对象
参数
textaction的文字
iconaction的图标
popMode按钮的样式
rpaction在pannel中的占位情况,默认是大图标
返回
返回添加的action

◆ addAction() [2/3]

void SARibbonPannel::addAction ( QAction * act,
QToolButton::ToolButtonPopupMode popMode,
SARibbonPannelItem::RowProportion rp = SARibbonPannelItem::Large )

添加一个action

参数
act
popMode按钮的样式
rpaction在pannel中的占位情况,默认是大图标

◆ addAction() [3/3]

void SARibbonPannel::addAction ( QAction * action,
SARibbonPannelItem::RowProportion rp )

添加action

action实际对应了一个toolbutton,如果想找到对应的toolbutton,使用actionToRibbonToolButton

参数
action
rp指定action的行占比
popMode菜单弹出样式

◆ addGallery()

SARibbonGallery * SARibbonPannel::addGallery ( bool expanding = true)

SARibbonPannel::addGallery

返回
注解
SARibbonPannel将拥有SARibbonGallery的管理权

◆ addLargeAction()

void SARibbonPannel::addLargeAction ( QAction * action)

添加大图标

action实际对应了一个toolbutton,如果想找到对应的toolbutton,使用actionToRibbonToolButton

参数
action

◆ addLargeWidget()

QAction * SARibbonPannel::addLargeWidget ( QWidget * w)

添加窗口,占用所有行

参数
w
返回
返回action(QWidgetAction)

◆ addMediumAction()

void SARibbonPannel::addMediumAction ( QAction * action)

在三栏模式下,强制加为2栏action

注解
在两行模式下,Medium和Small等价 主要应用在ThreeRowMode下

action实际对应了一个toolbutton,如果想找到对应的toolbutton,使用actionToRibbonToolButton

参数
action

◆ addMediumWidget()

QAction * SARibbonPannel::addMediumWidget ( QWidget * w)

添加窗口,占用ribbon的一行

参数
w
返回

◆ addMenu()

void SARibbonPannel::addMenu ( QMenu * menu,
SARibbonPannelItem::RowProportion rp,
QToolButton::ToolButtonPopupMode popMode = QToolButton::InstantPopup )

添加一个普通菜单

参数
menu
rp
popMode,菜单弹出模式,默认InstantPopup模式
返回

◆ addSeparator()

QAction * SARibbonPannel::addSeparator ( )

添加分割线

参数
top上边距 @default 6
bottom下边距 @default 6

◆ addSmallAction()

void SARibbonPannel::addSmallAction ( QAction * action)

添加小图标

action实际对应了一个toolbutton,如果想找到对应的toolbutton,使用actionToRibbonToolButton

参数
action

◆ addSmallWidget()

QAction * SARibbonPannel::addSmallWidget ( QWidget * w)

添加窗口,占用ribbon的一行

参数
w
返回
返回action(QWidgetAction)

◆ addWidget()

QAction * SARibbonPannel::addWidget ( QWidget * w,
SARibbonPannelItem::RowProportion rp )

添加窗口

参数
w
rp
返回
返回action(QWidgetAction)
注解
SARibbonPannel并不会管理此窗口内存,在delete SARibbonPannel时,此窗口如果父对象不是SARibbonPannel将不会被删除

◆ category()

SARibbonCategory * SARibbonPannel::category ( ) const

获取category指针,如果没有parent,或者不在category管理,返回nullptr

返回

◆ changeEvent()

void SARibbonPannel::changeEvent ( QEvent * e)
protectedvirtual

追踪字体改变事件,把新字体设置到childwidget中

参数
e

◆ getActionRowProportionProperty()

SARibbonPannelItem::RowProportion SARibbonPannel::getActionRowProportionProperty ( QAction * action)
static

获取action的行属性

参数
action
返回

◆ getActionToolButtonPopupModeProperty()

QToolButton::ToolButtonPopupMode SARibbonPannel::getActionToolButtonPopupModeProperty ( QAction * action)
static

获取action的ToolButtonPopupMode属性

参数
action
返回

◆ getActionToolButtonStyleProperty()

Qt::ToolButtonStyle SARibbonPannel::getActionToolButtonStyleProperty ( QAction * action)
static

获取action的ToolButtonStyle属性

参数
action
返回

◆ isCanCustomize()

bool SARibbonPannel::isCanCustomize ( ) const

判断是否可以自定义

返回

◆ isEnableShowTitle()

bool SARibbonPannel::isEnableShowTitle ( ) const

判断是否显示标题,只有标题的高度被设置,才会显示标题

返回

◆ isExpanding()

bool SARibbonPannel::isExpanding ( ) const

判断此pannel是否为(水平)扩展模式

返回
是扩展模式返回true

◆ isHaveOptionAction()

bool SARibbonPannel::isHaveOptionAction ( ) const

判断是否存在OptionAction

返回
存在返回true

◆ iterate()

bool SARibbonPannel::iterate ( SARibbonPannel::FpRibbonToolButtonIterate fp)

遍历SARibbonPannel下的所有RibbonToolButton,执行函数指针(bool(SARibbonRibbonToolButton*)),函数指针返回false则停止迭代

参数
fp
返回
返回false说明迭代中途退出,返回true则表示迭代完全

◆ largeButtonHeight()

int SARibbonPannel::largeButtonHeight ( ) const

获取大图标的高度

返回

◆ moveAction()

void SARibbonPannel::moveAction ( int from,
int to )

移动action

参数
from要移动action的位置,通过actionIndex 获取
to要移动的位置

◆ pannelHeightHint()

int SARibbonPannel::pannelHeightHint ( const QFontMetrics & fm,
PannelLayoutMode layMode,
int pannelTitleHeight )
static

pannel高度推荐

参数
fm
layMode
pannelTitleHeight
返回

◆ pannelLayout()

SARibbonPannelLayout * SARibbonPannel::pannelLayout ( ) const

获取pannel layout

返回

◆ pannelName()

QString SARibbonPannel::pannelName ( ) const

pannel名称

返回

◆ pannelNameChanged

void SARibbonPannel::pannelNameChanged ( const QString & n)
signal

pannel的标题发生了改变

参数
n

◆ ribbonBar()

SARibbonBar * SARibbonPannel::ribbonBar ( ) const

获取ribbonBar指针,如果没有返回nullptr

返回

◆ ribbonPannelItem()

const QList< SARibbonPannelItem * > & SARibbonPannel::ribbonPannelItem ( ) const

获取布局item

返回

◆ ribbonToolButtons()

QList< SARibbonToolButton * > SARibbonPannel::ribbonToolButtons ( ) const

获取pannel下面的所有toolbutton

返回

◆ setActionRowProportionProperty()

void SARibbonPannel::setActionRowProportionProperty ( QAction * action,
SARibbonPannelItem::RowProportion rp )
static

把action的行属性设置进action中,action自身携带了行属性

参数
action
rp

◆ setActionToolButtonPopupModeProperty()

void SARibbonPannel::setActionToolButtonPopupModeProperty ( QAction * action,
QToolButton::ToolButtonPopupMode popMode )
static

设置action的ToolButtonPopupMode属性

参数
action
popMode

◆ setActionToolButtonStyleProperty()

void SARibbonPannel::setActionToolButtonStyleProperty ( QAction * action,
Qt::ToolButtonStyle buttonStyle )
static

设置action的ToolButtonStyle属性

参数
action
buttonStyle

◆ setCanCustomize()

void SARibbonPannel::setCanCustomize ( bool b)

设置是否可以自定义

参数
b

◆ setEnableShowTitle()

void SARibbonPannel::setEnableShowTitle ( bool on)

是否显示标题,显示标题后,标题的高度需要设置,默认高度为15

参数
on

◆ setExpanding()

void SARibbonPannel::setExpanding ( bool isExpanding = true)

把pannel设置为扩展模式,此时会撑大水平区域

参数
isExpanding

◆ setOptionAction()

void SARibbonPannel::setOptionAction ( QAction * action)

添加操作action,如果要去除,传入nullptr指针即可,SARibbonPannel不会对QAction的所有权进行管理

参数
action
注解
要去除OptionAction直接传入nullptr即可
SARibbonPannel不对QAction的destroy进行关联,如果外部对action进行delete,需要先传入nullptr给addOptionAction

◆ setPannelLayoutMode()

void SARibbonPannel::setPannelLayoutMode ( SARibbonPannel::PannelLayoutMode mode)

设置PannelLayoutMode

参数
mode

◆ setPannelName()

void SARibbonPannel::setPannelName ( const QString & title)

pannel的名称

参数
title标题
注解
此函数会触发
参见
pannelNameChanged 信号

◆ setSpacing()

void SARibbonPannel::setSpacing ( int n)

设置按钮之间的间隔

参数
n

◆ setTitleHeight()

void SARibbonPannel::setTitleHeight ( int h)

设置标题栏的高度

参数
h

◆ spacing()

int SARibbonPannel::spacing ( ) const

按钮之间的间隔

返回

◆ titleHeight()

int SARibbonPannel::titleHeight ( ) const

标题栏高度

返回

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