![]() |
SARibbon 2.2.3
SARibbon wiki
|
pannel页窗口,pannel是ribbon的面板用于承放控件 更多...
#include <SARibbonPannel.h>
类 | |
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) |
添加窗口,占用所有行 | |
SARibbonGallery * | addGallery (bool expanding=true) |
SARibbonPannel::addGallery | |
QAction * | addSeparator () |
添加分割线 | |
SARibbonToolButton * | actionToRibbonToolButton (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 | |
SARibbonPannelLayout * | pannelLayout () const |
获取pannel layout | |
void | updateItemGeometry () |
更新布局 | |
SARibbonCategory * | category () const |
获取category指针,如果没有parent,或者不在category管理,返回nullptr | |
SARibbonBar * | ribbonBar () 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,但你必须继承对应的虚函数
|
protectedvirtual |
处理action的事件
这里处理了ActionAdded,ActionChanged,ActionRemoved三个事件
ActionAdded时向布局请求,添加action,布局中同时触发了SARibbonPannelLayout::createItem 函数 此函数用于生成窗口,例如QRibbonToolButton
ActionChanged时会让布局重新计算尺寸,并向category请求重新布局,有可能category的所有要重新调整尺寸
ActionRemoved会移除布局管理的QLayoutItem,并进行内存清理,这时窗口也会隐藏,同时销毁
e |
强制发送一个resizeevent,让Category能重绘,如果没有这个函数,发现Category的layout虽然设置了invalidate(标记缓存失效) 但并没有按顺序在pannel尺寸更新后更新Category的尺寸,导致有些pannel的尺寸识别出现异常 重打印信息上看,pannel的尺寸有进行更新,category的尺寸也进行了更新,但更新的次数和调用invalidate的次数不一样,需要手动触发ResizeEvent 尝试过调用QEvent::LayoutRequest没有效果:
调用parw->updateGeometry();也没有效果,目前看使用resizeevent是最有效果的
int SARibbonPannel::actionIndex | ( | QAction * | act | ) | const |
action对应的布局index,此操作一般用于移动,其他意义不大
act |
SARibbonToolButton * SARibbonPannel::actionToRibbonToolButton | ( | QAction * | action | ) |
从pannel中把action对应的button提取出来,如果action没有对应的button,就返回nullptr
action |
|
signal |
等同于QToolBar::actionTriggered
action |
QAction * SARibbonPannel::addAction | ( | const QString & | text, |
const QIcon & | icon, | ||
QToolButton::ToolButtonPopupMode | popMode, | ||
SARibbonPannelItem::RowProportion | rp = SARibbonPannelItem::Large ) |
生成并添加一个action
如果不对此action做操作,SARibbonPannel将管理此action
text | action的文字 |
icon | action的图标 |
popMode | 按钮的样式 |
rp | action在pannel中的占位情况,默认是大图标 |
void SARibbonPannel::addAction | ( | QAction * | act, |
QToolButton::ToolButtonPopupMode | popMode, | ||
SARibbonPannelItem::RowProportion | rp = SARibbonPannelItem::Large ) |
添加一个action
act | |
popMode | 按钮的样式 |
rp | action在pannel中的占位情况,默认是大图标 |
void SARibbonPannel::addAction | ( | QAction * | action, |
SARibbonPannelItem::RowProportion | rp ) |
添加action
action实际对应了一个toolbutton,如果想找到对应的toolbutton,使用actionToRibbonToolButton
action | |
rp | 指定action的行占比 |
popMode | 菜单弹出样式 |
SARibbonGallery * SARibbonPannel::addGallery | ( | bool | expanding = true | ) |
void SARibbonPannel::addLargeAction | ( | QAction * | action | ) |
QAction * SARibbonPannel::addLargeWidget | ( | QWidget * | w | ) |
添加窗口,占用所有行
w |
void SARibbonPannel::addMediumAction | ( | QAction * | action | ) |
在三栏模式下,强制加为2栏action
action实际对应了一个toolbutton,如果想找到对应的toolbutton,使用actionToRibbonToolButton
action |
QAction * SARibbonPannel::addMediumWidget | ( | QWidget * | w | ) |
添加窗口,占用ribbon的一行
w |
void SARibbonPannel::addMenu | ( | QMenu * | menu, |
SARibbonPannelItem::RowProportion | rp, | ||
QToolButton::ToolButtonPopupMode | popMode = QToolButton::InstantPopup ) |
添加一个普通菜单
menu | |
rp | |
popMode,菜单弹出模式,默认InstantPopup模式 |
QAction * SARibbonPannel::addSeparator | ( | ) |
添加分割线
top | 上边距 @default 6 |
bottom | 下边距 @default 6 |
void SARibbonPannel::addSmallAction | ( | QAction * | action | ) |
QAction * SARibbonPannel::addSmallWidget | ( | QWidget * | w | ) |
添加窗口,占用ribbon的一行
w |
QAction * SARibbonPannel::addWidget | ( | QWidget * | w, |
SARibbonPannelItem::RowProportion | rp ) |
添加窗口
w | |
rp |
SARibbonCategory * SARibbonPannel::category | ( | ) | const |
获取category指针,如果没有parent,或者不在category管理,返回nullptr
|
protectedvirtual |
追踪字体改变事件,把新字体设置到childwidget中
e |
|
static |
获取action的行属性
action |
|
static |
获取action的ToolButtonPopupMode属性
action |
|
static |
获取action的ToolButtonStyle属性
action |
bool SARibbonPannel::isCanCustomize | ( | ) | const |
判断是否可以自定义
bool SARibbonPannel::isEnableShowTitle | ( | ) | const |
判断是否显示标题,只有标题的高度被设置,才会显示标题
bool SARibbonPannel::isExpanding | ( | ) | const |
判断此pannel是否为(水平)扩展模式
bool SARibbonPannel::isHaveOptionAction | ( | ) | const |
判断是否存在OptionAction
bool SARibbonPannel::iterate | ( | SARibbonPannel::FpRibbonToolButtonIterate | fp | ) |
遍历SARibbonPannel下的所有RibbonToolButton,执行函数指针(bool(SARibbonRibbonToolButton*)),函数指针返回false则停止迭代
fp |
int SARibbonPannel::largeButtonHeight | ( | ) | const |
获取大图标的高度
void SARibbonPannel::moveAction | ( | int | from, |
int | to ) |
移动action
from | 要移动action的位置,通过actionIndex 获取 |
to | 要移动的位置 |
|
static |
pannel高度推荐
fm | |
layMode | |
pannelTitleHeight |
SARibbonPannelLayout * SARibbonPannel::pannelLayout | ( | ) | const |
获取pannel layout
QString SARibbonPannel::pannelName | ( | ) | const |
pannel名称
|
signal |
pannel的标题发生了改变
n |
SARibbonBar * SARibbonPannel::ribbonBar | ( | ) | const |
获取ribbonBar指针,如果没有返回nullptr
const QList< SARibbonPannelItem * > & SARibbonPannel::ribbonPannelItem | ( | ) | const |
获取布局item
QList< SARibbonToolButton * > SARibbonPannel::ribbonToolButtons | ( | ) | const |
获取pannel下面的所有toolbutton
|
static |
把action的行属性设置进action中,action自身携带了行属性
action | |
rp |
|
static |
设置action的ToolButtonPopupMode属性
action | |
popMode |
|
static |
设置action的ToolButtonStyle属性
action | |
buttonStyle |
void SARibbonPannel::setCanCustomize | ( | bool | b | ) |
设置是否可以自定义
b |
void SARibbonPannel::setEnableShowTitle | ( | bool | on | ) |
是否显示标题,显示标题后,标题的高度需要设置,默认高度为15
on |
void SARibbonPannel::setExpanding | ( | bool | isExpanding = true | ) |
把pannel设置为扩展模式,此时会撑大水平区域
isExpanding |
void SARibbonPannel::setOptionAction | ( | QAction * | action | ) |
添加操作action,如果要去除,传入nullptr指针即可,SARibbonPannel不会对QAction的所有权进行管理
action |
void SARibbonPannel::setPannelLayoutMode | ( | SARibbonPannel::PannelLayoutMode | mode | ) |
设置PannelLayoutMode
mode |
void SARibbonPannel::setPannelName | ( | const QString & | title | ) |
void SARibbonPannel::setSpacing | ( | int | n | ) |
设置按钮之间的间隔
n |
void SARibbonPannel::setTitleHeight | ( | int | h | ) |
设置标题栏的高度
h |
int SARibbonPannel::spacing | ( | ) | const |
按钮之间的间隔
int SARibbonPannel::titleHeight | ( | ) | const |
标题栏高度