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

用于管理SARibbon的所有Action 更多...

#include <SARibbonActionsManager.h>

类 SARibbonActionsManager 继承关系图:

class  PrivateData
 

Public 类型

enum  ActionTag {
  UnknowActionTag = 0 , CommonlyUsedActionTag = 0x01 , NotInFunctionalAreaActionTag = 0x02 , AutoCategoryDistinguishBeginTag = 0x1000 ,
  AutoCategoryDistinguishEndTag = 0x2000 , NotInRibbonCategoryTag = 0x2001 , UserDefineActionTag = 0x8000
}
 定义action的标签 更多...
 

信号

void actionTagChanged (int tag, bool isdelete)
 标签变化触发的信号,变化包括新增和删除
 

Public 成员函数

 SARibbonActionsManager (SARibbonBar *bar)
 
void setTagName (int tag, const QString &name)
 设置tag对应的名字,通过这个可以得到tag和文本的映射
 
QString tagName (int tag) const
 获取tag对应的中文名字
 
void removeTag (int tag)
 移除tag
 
bool registeAction (QAction *act, int tag, const QString &key=QString(), bool enableEmit=true)
 把action注册到管理器中,实现action的管理
 
void unregisteAction (QAction *act, bool enableEmit=true)
 取消action的注册
 
QList< QAction * > & filter (int tag)
 等同actions
 
QList< QAction * > & actions (int tag)
 根据tag得到actions
 
const QList< QAction * > actions (int tag) const
 
QList< int > actionTags () const
 获取所有的标签
 
QAction * action (const QString &key) const
 通过key获取action
 
QString key (QAction *act) const
 通过action找到key
 
int count () const
 返回所有管理的action数
 
QList< QAction * > allActions () const
 返回所有管理的actions
 
QMap< int, SARibbonCategory * > autoRegisteActions (SARibbonBar *bar)
 自动加载SARibbonBar的action 此函数会遍历SARibbonBar的父窗口(一般是SARibbonMainWindow)下的所有子object,找到action注册, 并会遍历所有SARibbonCategory,把SARibbonCategory下的action按SARibbonCategory的title name进行分类
 
QSet< QAction * > autoRegisteWidgetActions (QWidget *w, int tag, bool enableEmit=false)
 自动加载action
 
QList< QAction * > search (const QString &text)
 根据标题查找action
 
void clear ()
 

友元

class SARibbonActionsManagerModel
 

详细描述

用于管理SARibbon的所有Action

SARibbonActionsManager维护着两个表,一个是tag(标签)对应的Action list, 一个是所有接受SARibbonActionsManager管理的action list。

SARibbonActionsManager的标签对应一组actions,每个标签对应的action可以重复出现, 但SARibbonActionsManager维护的action list里只有一份action,不会重复出现。

tag用于对action list分组,每个tag的实体名字通过setTagName 进行设置,在语言变化时需要及时调用 setTagName设置新的标签对应的文本。

SARibbonActionsManager默认预设了6个常用标签见SARibbonActionsManager::ActionTag ,用户自定义标签需要在 SARibbonActionsManager::UserDefineActionTag值的基础上进行累加。

filter (等同actions )函数用于提取标签管理的action list,allActions 函数返回SARibbonActionsManager 管理的所有标签。

通过autoRegisteActions 函数可以快速的建立action的管理,此函数会遍历@ref SARibbonPannel 添加的action,并给予Category建立tag,正常使用用户仅需关注此autoRegisteActions函数即可

成员枚举类型说明

◆ ActionTag

定义action的标签

枚举值
UnknowActionTag 

未知的tag

CommonlyUsedActionTag 

预设tag-常用命令

NotInFunctionalAreaActionTag 

预设tag-不在功能区命令

AutoCategoryDistinguishBeginTag 

自动按Category划分的标签起始,在autoRegisteActions 函数会用到

AutoCategoryDistinguishEndTag 

自动按Category划分的标签结束,在autoRegisteActions 函数会用到

NotInRibbonCategoryTag 

不在功能区的标签autoRegisteActions 函数会遍历所有category的action

UserDefineActionTag 

自定义标签,所有用户自定义tag要大于此tag

成员函数说明

◆ action()

QAction * SARibbonActionsManager::action ( const QString & key) const

通过key获取action

参数
key
返回
如果没有key,返回nullptr

◆ actions()

QList< QAction * > & SARibbonActionsManager::actions ( int tag)

根据tag得到actions

参数
tag
返回

◆ actionTags()

QList< int > SARibbonActionsManager::actionTags ( ) const

获取所有的标签

返回

◆ allActions()

QList< QAction * > SARibbonActionsManager::allActions ( ) const

返回所有管理的actions

返回

◆ autoRegisteActions()

QMap< int, SARibbonCategory * > SARibbonActionsManager::autoRegisteActions ( SARibbonBar * bar)

自动加载SARibbonBar的action 此函数会遍历SARibbonBar的父窗口(一般是SARibbonMainWindow)下的所有子object,找到action注册, 并会遍历所有SARibbonCategory,把SARibbonCategory下的action按SARibbonCategory的title name进行分类

此函数会把所有category下的action生成tag并注册,返回的QMap<int, SARibbonCategory *>是记录了category对应的tag

此函数还会把SARibbonBar的父窗口(一般是SARibbonMainWindow)下面的action,但不在任何一个category下的作为NotInRibbonCategoryTag标签注册,默认名字会赋予not in ribbon, 可以通过setTagName 改变

参数
w
返回
注解
此函数的调用最好在category设置了标题后调用,因为会以category的标题作为标签的命名

◆ autoRegisteWidgetActions()

QSet< QAction * > SARibbonActionsManager::autoRegisteWidgetActions ( QWidget * w,
int tag,
bool enableEmit = false )

自动加载action

参数
w
tag
enableEmit
返回
返回成功加入SARibbonActionsManager管理的action

◆ count()

int SARibbonActionsManager::count ( ) const

返回所有管理的action数

返回

◆ filter()

QList< QAction * > & SARibbonActionsManager::filter ( int tag)

等同actions

参数
tag
返回

◆ key()

QString SARibbonActionsManager::key ( QAction * act) const

通过action找到key

参数
act
返回
如果找不到,返回QString()

◆ registeAction()

bool SARibbonActionsManager::registeAction ( QAction * act,
int tag,
const QString & key = QString(),
bool enableEmit = true )

把action注册到管理器中,实现action的管理

参数
act
tagtag是可以按照位进行叠加,见 ActionTag 如果 要定义自己的标签,建议定义大于ActionTag::UserDefineActionTag 的值, registeAction的tag是直接记录进去的,如果要多个标签并存,在registe之前先或好tag
keykey是action对应的key,一个key只对应一个action,是查找action的关键 ,默认情况为一个QString(),这时key是QAction的objectName
注解
同一个action多次注册不同的tag可以通过tag索引到action,但通过action只能索引到最后一个注册的tag
tag的新增会触发actionTagChanged信号

◆ removeTag()

void SARibbonActionsManager::removeTag ( int tag)

移除tag

注解
注意,这个函数非常耗时
参数
tag

◆ search()

QList< QAction * > SARibbonActionsManager::search ( const QString & text)

根据标题查找action

参数
text
返回

◆ setTagName()

void SARibbonActionsManager::setTagName ( int tag,
const QString & name )

设置tag对应的名字,通过这个可以得到tag和文本的映射

参数
tag
name
注解
在支持多语言的环境下,在语言切换时需要重新设置,以更新名字

◆ tagName()

QString SARibbonActionsManager::tagName ( int tag) const

获取tag对应的中文名字

参数
tag
返回

◆ unregisteAction()

void SARibbonActionsManager::unregisteAction ( QAction * act,
bool enableEmit = true )

取消action的注册

如果tag对应的最后一个action被撤销,tag也将一块删除

参数
act
注解
tag的删除会触发actionTagChanged信号
如果action关联了多个tag,这些tag里的action都会被删除,对应的key也同理

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