SARibbon 2.5.1
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
23 paintIconWithTextWordWrap(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const;
24
25private:
27};
28
32class SA_RIBBON_EXPORT SARibbonGalleryGroupModel : public QAbstractListModel
33{
34 Q_OBJECT
35public:
36 SARibbonGalleryGroupModel(QObject* parent = Q_NULLPTR);
38 virtual int rowCount(const QModelIndex& parent) const Q_DECL_OVERRIDE;
39 virtual Qt::ItemFlags flags(const QModelIndex& index) const Q_DECL_OVERRIDE;
40 virtual QVariant data(const QModelIndex& index, int role) const Q_DECL_OVERRIDE;
41 virtual QModelIndex index(int row, int column, const QModelIndex& parent) const Q_DECL_OVERRIDE;
42 virtual bool setData(const QModelIndex& index, const QVariant& value, int role) Q_DECL_OVERRIDE;
43 void clear();
44 SARibbonGalleryItem* at(int row) const;
45 void insert(int row, SARibbonGalleryItem* item);
46 SARibbonGalleryItem* take(int row);
47 void append(SARibbonGalleryItem* item);
48
49private:
50 QList< SARibbonGalleryItem* > mItems;
51};
52
58class SA_RIBBON_EXPORT SARibbonGalleryGroup : public QListView
59{
60 Q_OBJECT
61 SA_RIBBON_DECLARE_PRIVATE(SARibbonGalleryGroup)
62public:
72
77 {
78 DisplayOneRow = 1,
79 DisplayTwoRow = 2,
80 DisplayThreeRow = 3
81 };
82
83 SARibbonGalleryGroup(QWidget* w = 0);
84
85 virtual ~SARibbonGalleryGroup();
86 // 重新计算grid尺寸
87 void setRecalcGridSizeBlock(bool on = true);
88 bool isRecalcGridSizeBlock() const;
89 void recalcGridSize();
90 void recalcGridSize(int galleryHeight);
91 // 设置显示的样式
92 void setGalleryGroupStyle(GalleryGroupStyle style);
93 GalleryGroupStyle galleryGroupStyle() const;
94 // 添加一个item
95 void addItem(const QString& text, const QIcon& icon);
96 void addItem(SARibbonGalleryItem* item);
97 // 以一个aciton作为item添加
98 void addActionItem(QAction* act);
99 void addActionItemList(const QList< QAction* >& acts);
100
101 // 构建一个model,这个model的父类是SARibbonGalleryGroup,如果要共享model,需要手动处理model的父类
102 void setupGroupModel();
103 SARibbonGalleryGroupModel* groupModel();
104 // 标题
105 void setGroupTitle(const QString& title);
106 QString groupTitle() const;
107 void selectByIndex(int i);
108 // 设置显示的行数
109 void setDisplayRow(DisplayRow r);
110 DisplayRow displayRow() const;
111 // 设置grid最小的宽度,默认为0(不限制),可以限定grid的宽度
112 void setGridMinimumWidth(int w);
113 int gridMinimumWidth() const;
114 // 设置grid最大的宽度,默认为0(不限制),可以限定grid的宽度
115 void setGridMaximumWidth(int w);
116 int gridMaximumWidth() const;
117 // 获取SARibbonGalleryGroup管理的actiongroup
118 QActionGroup* actionGroup() const;
119private Q_SLOTS:
120 void onItemClicked(const QModelIndex& index);
121 void onItemEntered(const QModelIndex& index);
122Q_SIGNALS:
123 void groupTitleChanged(const QString& title);
129 void triggered(QAction* action);
136 void hovered(QAction* action);
137};
138
139#endif // SARIBBONGALLERYGROUP_H
SARibbonGalleryGroup对应的显示代理
Definition SARibbonGalleryGroup.h:13
SARibbonGalleryGroup对应的model
Definition SARibbonGalleryGroup.h:33
Gallery的组
Definition SARibbonGalleryGroup.h:59
void hovered(QAction *action)
等同QActionGroup的triggered 所有加入SARibbonGalleryGroup的action都会被一个QActionGroup管理,可以通过
void triggered(QAction *action)
等同QActionGroup的triggered 所有加入SARibbonGalleryGroup的action都会被一个QActionGroup管理,可以通过
GalleryGroupStyle
GalleryGroup显示的样式
Definition SARibbonGalleryGroup.h:67
@ IconWithWordWrapText
图标带文字,文字会换行显示,此模式只会对DisplayOneRow生效,如果不是DisplayOneRow,等同IconWithText
Definition SARibbonGalleryGroup.h:69
@ IconWithText
图标带文字
Definition SARibbonGalleryGroup.h:68
DisplayRow
定义Gallery在一个panel下面显示的图标行数
Definition SARibbonGalleryGroup.h:77
类似QStandardItem的GalleryItem
Definition SARibbonGalleryItem.h:14