![]() |
SARibbon 2.2.3
SARibbon wiki
|
用于管理SARibbon的所有Action 更多...
#include <SARibbonActionsManager.h>
类 | |
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函数即可
定义action的标签
枚举值 | |
---|---|
UnknowActionTag | 未知的tag |
CommonlyUsedActionTag | 预设tag-常用命令 |
NotInFunctionalAreaActionTag | 预设tag-不在功能区命令 |
AutoCategoryDistinguishBeginTag | 自动按Category划分的标签起始,在autoRegisteActions 函数会用到 |
AutoCategoryDistinguishEndTag | 自动按Category划分的标签结束,在autoRegisteActions 函数会用到 |
NotInRibbonCategoryTag | 不在功能区的标签autoRegisteActions 函数会遍历所有category的action |
UserDefineActionTag | 自定义标签,所有用户自定义tag要大于此tag |
QAction * SARibbonActionsManager::action | ( | const QString & | key | ) | const |
通过key获取action
key |
QList< QAction * > & SARibbonActionsManager::actions | ( | int | tag | ) |
根据tag得到actions
tag |
QList< int > SARibbonActionsManager::actionTags | ( | ) | const |
获取所有的标签
QList< QAction * > SARibbonActionsManager::allActions | ( | ) | const |
返回所有管理的actions
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 |
QSet< QAction * > SARibbonActionsManager::autoRegisteWidgetActions | ( | QWidget * | w, |
int | tag, | ||
bool | enableEmit = false ) |
自动加载action
w | |
tag | |
enableEmit |
int SARibbonActionsManager::count | ( | ) | const |
返回所有管理的action数
QList< QAction * > & SARibbonActionsManager::filter | ( | int | tag | ) |
等同actions
tag |
QString SARibbonActionsManager::key | ( | QAction * | act | ) | const |
通过action找到key
act |
bool SARibbonActionsManager::registeAction | ( | QAction * | act, |
int | tag, | ||
const QString & | key = QString(), | ||
bool | enableEmit = true ) |
把action注册到管理器中,实现action的管理
act | |
tag | tag是可以按照位进行叠加,见 ActionTag 如果 要定义自己的标签,建议定义大于ActionTag::UserDefineActionTag 的值, registeAction的tag是直接记录进去的,如果要多个标签并存,在registe之前先或好tag |
key | key是action对应的key,一个key只对应一个action,是查找action的关键 ,默认情况为一个QString(),这时key是QAction的objectName |
void SARibbonActionsManager::removeTag | ( | int | tag | ) |
移除tag
tag |
QList< QAction * > SARibbonActionsManager::search | ( | const QString & | text | ) |
根据标题查找action
text |
void SARibbonActionsManager::setTagName | ( | int | tag, |
const QString & | name ) |
设置tag对应的名字,通过这个可以得到tag和文本的映射
tag | |
name |
QString SARibbonActionsManager::tagName | ( | int | tag | ) | const |
获取tag对应的中文名字
tag |
void SARibbonActionsManager::unregisteAction | ( | QAction * | act, |
bool | enableEmit = true ) |
取消action的注册
如果tag对应的最后一个action被撤销,tag也将一块删除
act |