SARibbon 2.5.2
SARibbon wiki
载入中...
搜索中...
未找到
SARibbonPanel.h
1#ifndef SARIBBONPANEL_H
2#define SARIBBONPANEL_H
3#include "SARibbonGlobal.h"
4#include "SARibbonPanelItem.h"
5#include "SARibbonToolButton.h"
6#include <QLayout>
7#include <QWidget>
8#include <QLabel>
9class SARibbonMenu;
10class SARibbonGallery;
11class QGridLayout;
15class SARibbonBar;
16
26class SA_RIBBON_EXPORT SARibbonPanelLabel : public QLabel
27{
28 Q_OBJECT
29public:
31 SARibbonPanelLabel(QWidget* parent = nullptr);
32};
33
99class SA_RIBBON_EXPORT SARibbonPanel : public QFrame
100{
101 Q_OBJECT
102 SA_RIBBON_DECLARE_PRIVATE(SARibbonPanel)
103 friend class SARibbonBar;
104 friend class SARibbonCategory;
105 friend class SARibbonCategoryPrivate;
106 friend class SARibbonCustomizeWidgetPrivate;
107 friend class SARibbonPanelLayout;
108 Q_PROPERTY(bool isCanCustomize READ isCanCustomize WRITE setCanCustomize)
109 Q_PROPERTY(bool isExpanding READ isExpanding WRITE setExpanding)
110 Q_PROPERTY(QString panelName READ panelName WRITE setPanelName)
111public:
116 {
127
137 TwoRowMode
138 };
139 Q_ENUM(PanelLayoutMode)
140public:
141 using FpRibbonToolButtonIterate = std::function< bool(SARibbonToolButton*) >;
142
143public:
145 explicit SARibbonPanel(QWidget* parent = nullptr);
147 explicit SARibbonPanel(const QString& name, QWidget* parent = nullptr);
149 ~SARibbonPanel() Q_DECL_OVERRIDE;
150 using QWidget::addAction;
151
153 void addAction(QAction* action, SARibbonPanelItem::RowProportion rowProportion);
155 void addAction(QAction* act,
156 QToolButton::ToolButtonPopupMode popMode,
157 SARibbonPanelItem::RowProportion rowProportion = SARibbonPanelItem::Large);
159 void addLargeAction(QAction* action);
161 void addMediumAction(QAction* action);
163 void addSmallAction(QAction* action);
164
166 void addSmallAction(QAction* action, QToolButton::ToolButtonPopupMode popMode);
168 void addLargeAction(QAction* action, QToolButton::ToolButtonPopupMode popMode);
170 void addMediumAction(QAction* action, QToolButton::ToolButtonPopupMode popMode);
172 QAction* addAction(const QString& text,
173 const QIcon& icon,
174 QToolButton::ToolButtonPopupMode popMode,
175 SARibbonPanelItem::RowProportion rowProportion = SARibbonPanelItem::Large);
176
178 void addMenu(QMenu* menu,
179 SARibbonPanelItem::RowProportion rowProportion,
180 QToolButton::ToolButtonPopupMode popMode = QToolButton::InstantPopup);
182 void addLargeMenu(QMenu* menu, QToolButton::ToolButtonPopupMode popMode = QToolButton::InstantPopup);
184 void addMediumMenu(QMenu* menu, QToolButton::ToolButtonPopupMode popMode = QToolButton::InstantPopup);
186 void addSmallMenu(QMenu* menu, QToolButton::ToolButtonPopupMode popMode = QToolButton::InstantPopup);
187
189 QAction* addWidget(QWidget* w, SARibbonPanelItem::RowProportion rowProportion);
190
192 QAction* addSmallWidget(QWidget* w);
193
195 QAction* addMediumWidget(QWidget* w);
196
198 QAction* addLargeWidget(QWidget* w);
199
201 SARibbonGallery* addGallery(bool expanding = true);
202
204 QAction* addSeparator();
205
207 SARibbonToolButton* actionToRibbonToolButton(QAction* action);
208
211 void setOptionAction(QAction* action);
212
214 bool isHaveOptionAction() const;
215
217 QList< SARibbonToolButton* > ribbonToolButtons() const;
218
220 PanelLayoutMode panelLayoutMode() const;
222 void setPanelLayoutMode(PanelLayoutMode mode);
223
225 void resetToolButtonSize();
226
228 bool isTwoRow() const;
229
231 void setExpanding(bool isExpanding = true);
233 bool isExpanding() const;
234
236 int titleHeight() const;
237
239 bool isEnableShowTitle() const;
240
242 int actionIndex(QAction* act) const;
243
245 void moveAction(int from, int to);
246
248 bool isCanCustomize() const;
250 void setCanCustomize(bool b);
251
253 QString panelName() const;
255 void setPanelName(const QString& title);
256
258 int largeButtonHeight() const;
259
261 const QList< SARibbonPanelItem* >& ribbonPanelItem() const;
262
264 SARibbonPanelLayout* panelLayout() const;
265
267 void updateItemGeometry();
268
270 SARibbonCategory* category() const;
271
273 SARibbonBar* ribbonBar() const;
274
276 int spacing() const;
277
279 void setToolButtonIconSize(const QSize& smallSize, const QSize& largeSize);
281 QPair< QSize, QSize > toolButtonIconSize() const;
282
284 void setLargeIconSize(const QSize& largeSize);
286 QSize largeIconSize() const;
287
289 void setSmallIconSize(const QSize& smallSize);
291 QSize smallIconSize() const;
292
294 SARibbonToolButton* lastAddActionButton();
295
297 SARibbonPanelLabel* titleLabel() const;
298
300 bool isEnableWordWrap() const;
301
303 qreal buttonMaximumAspectRatio() const;
304
307 bool iterateButton(FpRibbonToolButtonIterate fp) const;
308
309public:
311 virtual QSize sizeHint() const Q_DECL_OVERRIDE;
313 virtual QSize minimumSizeHint() const Q_DECL_OVERRIDE;
314
315public:
317 static int panelHeightHint(const QFontMetrics& fm, PanelLayoutMode layMode, int panelTitleHeight);
319 static void setActionRowProportionProperty(QAction* action, SARibbonPanelItem::RowProportion rp);
321 static SARibbonPanelItem::RowProportion getActionRowProportionProperty(QAction* action);
323 static void setActionToolButtonPopupModeProperty(QAction* action, QToolButton::ToolButtonPopupMode popMode);
325 static QToolButton::ToolButtonPopupMode getActionToolButtonPopupModeProperty(QAction* action);
327 static void setActionToolButtonStyleProperty(QAction* action, Qt::ToolButtonStyle buttonStyle);
329 static Qt::ToolButtonStyle getActionToolButtonStyleProperty(QAction* action);
330
331Q_SIGNALS:
332
344 void actionTriggered(QAction* action);
345
357 void panelNameChanged(const QString& n);
358
359protected:
361 virtual void actionEvent(QActionEvent* e) Q_DECL_OVERRIDE;
363 virtual void changeEvent(QEvent* e) Q_DECL_OVERRIDE;
364
365protected:
366 // The following methods are for receiving parameters from the corresponding interfaces of SARibbonBar, users do not
367 // need to set them when operating SARibbonPanel When SARibbonPanel is set to SARibbonCategory, SARibbonCategory
368 // will resynchronize its own parameters to the panel Similarly, when SARibbonCategory is added to SARibbonBar,
369 // SARibbonBar will resynchronize its own parameters to the category
370
372 void setTitleHeight(int h);
373
375 void setSpacing(int n);
376
378 void setEnableShowTitle(bool on);
379
382 void setEnableWordWrap(bool on);
383
385 void setButtonMaximumAspectRatio(qreal fac = 1.4);
386};
387
388#endif // SARIBBONPANEL_H
Definition SARibbonBar.h:171
Definition SARibbonCategory.h:32
Definition SARibbonGallery.h:80
Definition SARibbonMenu.h:18
Definition SARibbonPanelItem.h:25
Definition SARibbonPanel.h:27
Definition SARibbonPanelLayout.h:25
Definition SARibbonPanelOptionButton.h:25
panel页窗口,panel是ribbon的面板用于承放控件 / Ribbon panel container, used to hold controls
Definition SARibbonPanel.h:100
PanelLayoutMode
Layout mode for the panel / 面板的布局模式
Definition SARibbonPanel.h:116
@ ThreeRowMode
Three-row layout mode / 三行布局模式
Definition SARibbonPanel.h:126
Definition SARibbonToolButton.h:27