QtCanpool 3.3.0
载入中...
搜索中...
未找到
ribboncustomizewidget.h
浏览该文件的文档.
1
5#pragma once
6
7#include "qxribbon_global.h"
10#include "ribbongroup.h"
11
12#include <QWidget>
13
14class QStandardItemModel;
15class QStandardItem;
16class QAbstractButton;
17class QXmlStreamWriter;
18class QXmlStreamReader;
19
21
22class RibbonCustomizeWidgetUi;
23class RibbonCustomizeWidgetPrivate;
24class RibbonBar;
25
29class RibbonCustomizeWidget : public QWidget
30{
31 Q_OBJECT
32public:
38 ShowMainPage
39 };
40
51public:
52 RibbonCustomizeWidget(RibbonBar *ribbonBar, QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags());
54
55 // 设置action管理器
56 void setupActionsManager(RibbonActionsManager *mgr);
57
58 // 判断用户是否有改动内容
59 bool isChanged() const;
60
61 // 获取model
62 const QStandardItemModel *model() const;
63
64 // 根据当前的radiobutton选项来更新model
65 void updateModel();
66
67 // 更新model
68 void updateModel(RibbonTreeShowType type);
69
70 // 应用所有的设定
71 bool apply();
72
73 // 转换为xml
74 bool toXml(QXmlStreamWriter *xml) const;
75 bool toXml(const QString &xmlpath) const;
76
77 // 从xml中加载QList<RibbonCustomizeData>,对于基于配置文件的设置,对话框显示前建议调用此函数,保证叠加设置的正确记录
78 void fromXml(QXmlStreamReader *xml);
79 void fromXml(const QString &xmlpath);
80
81 // 应用xml配置,可以结合customize_datas_from_xml和customize_datas_apply函数
82 static bool fromXml(QXmlStreamReader *xml, RibbonBar *bar, RibbonActionsManager *mgr);
83
84 // 清除所有动作,在执行applys函数后,如果要继续调用,应该clear,否则会导致异常
85 void clear();
86protected:
87 // 把QList<RibbonCustomizeData>进行裁剪,把一些动作合并
88 void simplify();
89
90 RibbonGroup::RowProportion selectedRowProportion() const;
91
92 QAction *selectedAction() const;
93 QAction *itemToAction(QStandardItem *item) const;
94
95 QStandardItem *selectedItem() const;
96
97 // 获取选中的ribbon tree 的level
98 int selectedRibbonLevel() const;
99
100 // 根据选中的item判断
101 int itemLevel(QStandardItem *item) const;
102
103 // 设置某个item被选中
104 void setSelectItem(QStandardItem *item, bool ensureVisible = true);
105
106 // 判断itemn能否改动,可以改动返回true
107 bool isItemCanCustomize(QStandardItem *item) const;
108 bool isSelectedItemCanCustomize() const;
109
110 // 判断item是否是自定义的item
111 bool isCustomizeItem(QStandardItem *item) const;
112 bool isSelectedItemIsCustomize() const;
113
114 // 删除一个item
115 void removeItem(QStandardItem *item);
116
117private Q_SLOTS:
118 void onComboBoxActionIndexCurrentIndexChanged(int index);
119 void onRadioButtonGroupButtonClicked(QAbstractButton *b);
120 void onPushButtonNewPageClicked();
121 void onPushButtonNewGroupClicked();
122 void onPushButtonRenameClicked();
123 void onPushButtonAddClicked();
124 void onPushButtonDeleteClicked();
125 void onListViewSelectClicked(const QModelIndex &index);
126 void onTreeViewResultClicked(const QModelIndex &index);
127 void onToolButtonUpClicked();
128 void onToolButtonDownClicked();
129 void onItemChanged(QStandardItem *item);
130 void onLineEditSearchActionTextEdited(const QString &text);
131 void onPushButtonResetClicked();
132private:
133 void initConnection();
134private:
135 RibbonCustomizeWidgetUi *ui;
136 RibbonCustomizeWidgetPrivate *d;
137};
138
用于管理 Ribbon 的所有 Action
RibbonBar 继承 QMenuBar, 在 RibbonWindow 中直接替换了原来的 QMenuBar
Definition ribbonbar.h:99
RibbonTreeShowType
定义ribbon树的显示类型
@ ShowAllPage
显示所有的页,包括上下文
ItemRole
QStandardItem对应的role
@ CustomizeObjNameRole
记录了临时的自定义内容的obj名 QString
@ CanCustomizeRole
代表个item是可以自定义的.bool
@ PointerRole
代表这是存放指针。根据LevelRole来进行转
@ CustomizeRole
代表这个是自定义的item,bool,主要用于那些自己添加的标签和group,有此角色必有CanCustomizeRole
#define Q_NULLPTR
Copyleft (C) 2025 maminjie canpool@163.com SPDX-License-Identifier: MulanPSL-2.0
#define QX_RIBBON_END_NAMESPACE
#define QX_RIBBON_BEGIN_NAMESPACE
QColor text