SARibbon 2.5.2
SARibbon wiki
载入中...
搜索中...
未找到
SARibbonGalleryGroup.h
1#ifndef SARIBBONGALLERYGROUP_H
2#define SARIBBONGALLERYGROUP_H
3#include "SARibbonGlobal.h"
4#include <QList>
5#include <QListView>
6#include <QStyledItemDelegate>
7#include "SARibbonGalleryItem.h"
8
12class SA_RIBBON_EXPORT SARibbonGalleryGroupItemDelegate : public QStyledItemDelegate
13{
14public:
15 explicit SARibbonGalleryGroupItemDelegate(SARibbonGalleryGroup* group, QObject* parent = nullptr);
17 virtual void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override;
18
19 virtual QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const override;
20 virtual void paintIconOnly(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const;
21 virtual void paintIconWithText(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const;
22 virtual void paintIconWithTextWordWrap(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const;
23
24private:
26};
27
31class SA_RIBBON_EXPORT SARibbonGalleryGroupModel : public QAbstractListModel
32{
33 Q_OBJECT
34public:
35 SARibbonGalleryGroupModel(QObject* parent = Q_NULLPTR);
37 virtual int rowCount(const QModelIndex& parent) const Q_DECL_OVERRIDE;
38 virtual Qt::ItemFlags flags(const QModelIndex& index) const Q_DECL_OVERRIDE;
39 virtual QVariant data(const QModelIndex& index, int role) const Q_DECL_OVERRIDE;
40 virtual QModelIndex index(int row, int column, const QModelIndex& parent) const Q_DECL_OVERRIDE;
41 virtual bool setData(const QModelIndex& index, const QVariant& value, int role) Q_DECL_OVERRIDE;
42 void clear();
43 SARibbonGalleryItem* at(int row) const;
44 void insert(int row, SARibbonGalleryItem* item);
45 SARibbonGalleryItem* take(int row);
46 void append(SARibbonGalleryItem* item);
47 // 条目数量
48 int itemSize() const;
49
50private:
51 QList< SARibbonGalleryItem* > mItems;
52};
53
59class SA_RIBBON_EXPORT SARibbonGalleryGroup : public QListView
60{
61 Q_OBJECT
62 SA_RIBBON_DECLARE_PRIVATE(SARibbonGalleryGroup)
63public:
73
78 {
79 DisplayOneRow = 1,
80 DisplayTwoRow = 2,
81 DisplayThreeRow = 3
82 };
83
84 SARibbonGalleryGroup(QWidget* w = 0);
85
86 virtual ~SARibbonGalleryGroup();
87 // 重新计算grid尺寸
88 void recalcGridSize();
89 void recalcGridSize(int galleryHeight);
90 // 设置显示的样式
91 void setGalleryGroupStyle(GalleryGroupStyle style);
92 GalleryGroupStyle galleryGroupStyle() const;
93 // 添加一个item
94 void addItem(const QString& text, const QIcon& icon);
95 void addItem(SARibbonGalleryItem* item);
96 // 以一个aciton作为item添加
97 void addActionItem(QAction* act);
98 void addActionItemList(const QList< QAction* >& acts);
99
100 SARibbonGalleryGroupModel* groupModel() const;
101 // 标题
102 void setGroupTitle(const QString& title);
103 QString groupTitle() const;
104 void selectByIndex(int i);
105 // 设置显示的行数
106 void setDisplayRow(DisplayRow r);
107 DisplayRow displayRow() const;
108 // 设置grid最小的宽度,默认为0(不限制),可以限定grid的宽度
109 void setGridMinimumWidth(int w);
110 int gridMinimumWidth() const;
111 // 设置grid最大的宽度,默认为0(不限制),可以限定grid的宽度
112 void setGridMaximumWidth(int w);
113 int gridMaximumWidth() const;
114 // 获取SARibbonGalleryGroup管理的actiongroup
115 QActionGroup* actionGroup() const;
116 // 行数
117 int gridRowCount() const;
118 // 列数量
119 int gridColumnCount() const;
120 // 根据宽度计算推荐高度
121 int preferredHeightForWidth(int w) const;
122 // 流式listview,需要让它变为高度由宽度决定
123 bool hasHeightForWidth() const override;
124 //
125 int heightForWidth(int w) const override;
126private Q_SLOTS:
127 void onItemClicked(const QModelIndex& index);
128 void onItemEntered(const QModelIndex& index);
129Q_SIGNALS:
130 void groupTitleChanged(const QString& title);
136 void triggered(QAction* action);
143 void hovered(QAction* action);
144
145private:
146 // 构建一个model,这个model的父类是SARibbonGalleryGroup,如果要共享model,需要手动处理model的父类
147 SARibbonGalleryGroupModel* setupGroupModel();
148};
149
150#endif // SARIBBONGALLERYGROUP_H
SARibbonGalleryGroup对应的显示代理
Definition SARibbonGalleryGroup.h:13
SARibbonGalleryGroup对应的model
Definition SARibbonGalleryGroup.h:32
Gallery的组
Definition SARibbonGalleryGroup.h:60
void hovered(QAction *action)
等同QActionGroup的triggered 所有加入SARibbonGalleryGroup的action都会被一个QActionGroup管理,可以通过
void triggered(QAction *action)
等同QActionGroup的triggered 所有加入SARibbonGalleryGroup的action都会被一个QActionGroup管理,可以通过
GalleryGroupStyle
GalleryGroup显示的样式
Definition SARibbonGalleryGroup.h:68
@ IconWithWordWrapText
图标带文字,文字会换行显示,此模式只会对DisplayOneRow生效,如果不是DisplayOneRow,等同IconWithText
Definition SARibbonGalleryGroup.h:70
@ IconWithText
图标带文字
Definition SARibbonGalleryGroup.h:69
DisplayRow
定义Gallery在一个panel下面显示的图标行数
Definition SARibbonGalleryGroup.h:78
类似QStandardItem的GalleryItem
Definition SARibbonGalleryItem.h:14