SARibbon 2.5.1
SARibbon wiki
载入中...
搜索中...
未找到
SARibbonActionsManager.h
1#ifndef SARIBBONACTIONSMANAGER_H
2#define SARIBBONACTIONSMANAGER_H
3#include "SARibbonGlobal.h"
4#include <QObject>
5#include <QAbstractListModel>
6#include <QAction>
7#include <QMap>
8#include <QString>
9#include <QSet>
10class SARibbonBar;
12
36class SA_RIBBON_EXPORT SARibbonActionsManager : public QObject
37{
38 Q_OBJECT
39 SA_RIBBON_DECLARE_PRIVATE(SARibbonActionsManager)
40 friend class SARibbonActionsManagerModel;
41
42public:
47 {
48 UnknowActionTag = 0,
49 CommonlyUsedActionTag = 0x01,
50 NotInFunctionalAreaActionTag = 0x02,
51 AutoCategoryDistinguishBeginTag = 0x1000,
52 AutoCategoryDistinguishEndTag = 0x2000,
53 NotInRibbonCategoryTag = 0x2001,
54 UserDefineActionTag = 0x8000
55 };
58 // 设置tag对应的名字
59 void setTagName(int tag, const QString& name);
60
61 // 获取tag对应的名字
62 QString tagName(int tag) const;
63
64 // 移除tag,注意,这个函数非常耗时
65 void removeTag(int tag);
66
67 // 注册action
68 bool registeAction(QAction* act, int tag, const QString& key = QString(), bool enableEmit = true);
69
70 // 取消action的注册
71 void unregisteAction(QAction* act, bool enableEmit = true);
72
73 // 过滤得到actions对应的引用,实际是一个迭代器
74 QList< QAction* >& filter(int tag);
75
76 // 通过tag筛选出系列action
77 QList< QAction* >& actions(int tag);
78 const QList< QAction* > actions(int tag) const;
79
80 // 获取所有的标签
81 QList< int > actionTags() const;
82
83 // 通过key获取action
84 QAction* action(const QString& key) const;
85
86 // 通过action找到key
87 QString key(QAction* act) const;
88
89 // 返回所有管理的action数
90 int count() const;
91
92 // 返回所有管理的actions
93 QList< QAction* > allActions() const;
94
95 // 自动加载action,返回tag对应的Category指针
96 QMap< int, SARibbonCategory* > autoRegisteActions(SARibbonBar* bar);
97
98 // 自动加载widget下的actions函数返回的action,返回加载的数量,这些
99 QSet< QAction* > autoRegisteWidgetActions(QWidget* w, int tag, bool enableEmit = false);
100
101 // 根据标题查找action
102 QList< QAction* > search(const QString& text);
103
104 // 清除
105 void clear();
106
107Q_SIGNALS:
108
112 void actionTagChanged(int tag, bool isdelete);
113
114private Q_SLOTS:
115 void onActionDestroyed(QObject* o);
116 void onCategoryTitleChanged(const QString& title);
117
118private:
119 void removeAction(QAction* act, bool enableEmit = true);
120};
121
125class SA_RIBBON_EXPORT SARibbonActionsManagerModel : public QAbstractListModel
126{
127 Q_OBJECT
128 SA_RIBBON_DECLARE_PRIVATE(SARibbonActionsManagerModel)
129public:
130 explicit SARibbonActionsManagerModel(QObject* p = nullptr);
131 explicit SARibbonActionsManagerModel(SARibbonActionsManager* m, QObject* p = nullptr);
133 virtual int rowCount(const QModelIndex& parent) const override;
134 virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
135 virtual Qt::ItemFlags flags(const QModelIndex& index) const override;
136 virtual QVariant data(const QModelIndex& index, int role) const override;
137 void setFilter(int tag);
138 void update();
139 void setupActionsManager(SARibbonActionsManager* m);
140 void uninstallActionsManager();
141 QAction* indexToAction(QModelIndex index) const;
142 void search(const QString& text);
143
144private Q_SLOTS:
145 void onActionTagChanged(int tag, bool isdelete);
146};
147
148#endif // SARIBBONACTIONSMANAGER_H
SARibbonActionsManager 对应的model
Definition SARibbonActionsManager.h:126
用于管理SARibbon的所有Action
Definition SARibbonActionsManager.h:37
void actionTagChanged(int tag, bool isdelete)
标签变化触发的信号,变化包括新增和删除
ActionTag
定义action的标签
Definition SARibbonActionsManager.h:47
SARibbonBar继承于QMenuBar,在SARibbonMainWindow中直接替换了原来的QMenuBar
Definition SARibbonBar.h:94
Ribbon控件中的分类选项卡页面(Category)
Definition SARibbonCategory.h:66