QtCanpool 3.3.0
载入中...
搜索中...
未找到
ribbongroup.h
浏览该文件的文档.
1
5#pragma once
6
7#include "qxribbon_global.h"
8#include "ribbonbutton.h"
9
10#include <QWidget>
11
13
14class RibbonGallery;
15class RibbonGroupPrivate;
16
28class QX_RIBBON_EXPORT RibbonGroup : public QWidget
29{
30 Q_OBJECT
31 Q_PROPERTY(bool isCanCustomize READ isCanCustomize WRITE setCanCustomize)
32 Q_PROPERTY(bool isExpanding READ isExpanding WRITE setExpanding)
33 Q_PROPERTY(QString groupName READ groupName WRITE setGroupName)
34public:
37 TwoRowMode
38 };
42 Medium,
45 };
46public:
47 // make the addAction of QWidget visible in the subclass
48 using QWidget::addAction;
49public:
50 explicit RibbonGroup(QWidget *parent = Q_NULLPTR);
51 explicit RibbonGroup(const QString &name, QWidget *parent = Q_NULLPTR);
52 ~RibbonGroup() Q_DECL_OVERRIDE;
53
54 QString groupName() const;
55 void setGroupName(const QString &title);
56 QString title() const;
57 void setTitle(const QString &title);
58
59 static RibbonGroup::RowProportion getActionRowProportionProperty(QAction *action);
60 static void setActionRowProportionProperty(QAction *action, RibbonGroup::RowProportion rp);
61
62 void setActionRowProportion(QAction *action, RibbonGroup::RowProportion rp);
63
64 RibbonButton *addAction(QAction *action, RibbonGroup::RowProportion rp);
65 RibbonButton *addLargeAction(QAction *action);
66 RibbonButton *addMediumAction(QAction *action);
67 RibbonButton *addSmallAction(QAction *action);
68
69 void addAction(QAction *act, QToolButton::ToolButtonPopupMode popMode,
70 RibbonGroup::RowProportion rp = RibbonGroup::Large);
71 QAction *addAction(const QString &text, const QIcon &icon, QToolButton::ToolButtonPopupMode popMode,
72 RibbonGroup::RowProportion rp = RibbonGroup::Large);
73
74 RibbonButton *addMenu(QMenu *menu, RibbonGroup::RowProportion rp,
75 QToolButton::ToolButtonPopupMode popMode = QToolButton::InstantPopup);
76 RibbonButton *addLargeMenu(QMenu *menu, QToolButton::ToolButtonPopupMode popMode = QToolButton::InstantPopup);
77 RibbonButton *addSmallMenu(QMenu *menu, QToolButton::ToolButtonPopupMode popMode = QToolButton::InstantPopup);
78
79 RibbonButton *addActionMenu(QAction *action, QMenu *menu, RibbonGroup::RowProportion rp);
80 RibbonButton *addLargeActionMenu(QAction *action, QMenu *menu);
81
82 QAction *addWidget(QWidget *w, RibbonGroup::RowProportion rp);
83 QAction *addLargeWidget(QWidget *w);
84 QAction *addMediumWidget(QWidget *w);
85 QAction *addSmallWidget(QWidget *w);
86
87 RibbonGallery *addGallery();
88
89 QAction *addSeparator(int top = 6, int bottom = 6);
90
91 int ribbonButtonCount() const;
92 RibbonButton *ribbonButtonByIndex(int index) const;
93 RibbonButton *ribbonButtonForAction(QAction *action) const;
94 QList<RibbonButton *> ribbonButtons() const;
95
96 bool hasOptionAction() const;
97 void addOptionAction(QAction *action);
98
99 int actionIndex(QAction *act) const;
100 void moveAction(int from, int to);
101
102 GroupLayoutMode groupLayoutMode() const;
103
104 bool isTwoRow() const;
105
106 virtual QSize optionActionButtonSize() const;
107 virtual QSize sizeHint() const Q_DECL_OVERRIDE;
108 virtual QSize minimumSizeHint() const Q_DECL_OVERRIDE;
109
110 bool isExpanding() const;
111 void setExpanding(bool expanding = true);
112
113 bool isCanCustomize() const;
114 void setCanCustomize(bool b);
115
116 int largeHeight() const;
117 int titleHeight() const;
118
119 static bool titleVisible();
120 static void setTitleVisible(bool visible);
121
122 static int groupTitleHeight();
123 static void setGroupTitleHeight(int h);
124Q_SIGNALS:
125 void actionTriggered(QAction *action);
126protected:
127 void setGroupLayoutMode(GroupLayoutMode mode);
128 void updateItemGeometry();
129protected:
130 virtual void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
131 virtual void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE;
132 virtual void actionEvent(QActionEvent *event) Q_DECL_OVERRIDE;
133private:
135 friend class RibbonPage;
136 friend class RibbonPagePrivate;
137 friend class RibbonCustomizeWidgetPrivate;
138};
139
Ribbon 界面适用的 toolButton
group 用于对 ribbon 页窗口中的控件进行分组
Definition ribbongroup.h:29
@ ThreeRowMode
三行布局模式,office就是三行布局模式,group能布置3行小toolbutton,默认模式
Definition ribbongroup.h:36
@ Small
小占比,占RibbonGroup的一行,Medium在不满足条件时也会变为Small,但不会变为Large
Definition ribbongroup.h:44
@ Auto
未定义占比,这时候将会依据expandingDirections来判断,如果能有Qt::Vertical,就等同于Large,否则就是Small
Definition ribbongroup.h:40
@ Large
大占比,一个widget的高度会充满整个group
Definition ribbongroup.h:41
一项 ribbon tab 页
Definition ribbonpage.h:30
#define QX_DECLARE_PRIVATE(Class)
#define Q_NULLPTR
Copyleft (C) 2025 maminjie canpool@163.com SPDX-License-Identifier: MulanPSL-2.0
#define QX_RIBBON_EXPORT
#define QX_RIBBON_END_NAMESPACE
#define QX_RIBBON_BEGIN_NAMESPACE
const char * name
Definition qxtheme.cpp:25
QColor text