SARibbon 2.5.2
SARibbon wiki
载入中...
搜索中...
未找到
SARibbonToolButton.h
1#ifndef SARIBBONTOOLBUTTON_H
2#define SARIBBONTOOLBUTTON_H
3#include "SARibbonGlobal.h"
4#include <QToolButton>
5#include <QDebug>
26class SA_RIBBON_EXPORT SARibbonToolButton : public QToolButton
27{
28 Q_OBJECT
29 SA_RIBBON_DECLARE_PRIVATE(SARibbonToolButton)
30public:
35 {
40
45 SmallButton
46 };
47 Q_ENUM(RibbonButtonType)
48
49
53 {
66 qreal twoLineHeightFactor { 2.05 };
67
80 qreal oneLineHeightFactor { 1.2 };
81
95 qreal buttonMaximumAspectRatio { 1.4 };
96 };
97
98public:
99 explicit SARibbonToolButton(QWidget* parent = nullptr);
100 explicit SARibbonToolButton(QAction* defaultAction, QWidget* parent = nullptr);
102
104 RibbonButtonType buttonType() const;
106 void setButtonType(const RibbonButtonType& buttonType);
107
109 bool isSmallRibbonButton() const;
111 bool isLargeRibbonButton() const;
112
114 int spacing() const;
116 void setSpacing(int v);
117
119 void updateRect();
120
122 void setLayoutFactor(const LayoutFactor& fac);
124 const LayoutFactor& layoutFactor() const;
126 LayoutFactor& layoutFactor();
127
128 // Enables or disables automatic text wrapping for large buttons / 为大按钮启用或禁用自动文字换行
129 void setEnableWordWrap(bool on);
130 // Checks if automatic text wrapping is enabled / 检查是否启用了自动文字换行
131 bool isEnableWordWrap();
132
133 // Sets the button's maximum aspect ratio (width/height) / 设置按钮的最大宽高比
134 void setButtonMaximumAspectRatio(qreal v = 1.4);
135 // Gets the button's maximum aspect ratio (width/height) / 获取按钮的最大宽高比
136 qreal buttonMaximumAspectRatio() const;
137
138 // Invalidates the cached size hint / 使缓存的size hint失效
139 void invalidateSizeHint();
140
141 // 大按钮尺寸
142 void setLargeIconSize(const QSize& largeSize);
143 QSize largeIconSize() const;
144
145 // 小按钮尺寸
146 void setSmallIconSize(const QSize& smallSize);
147 QSize smallIconSize() const;
148
149public:
150 virtual QSize sizeHint() const Q_DECL_OVERRIDE;
151 virtual QSize minimumSizeHint() const Q_DECL_OVERRIDE;
152
153protected:
154 virtual void paintEvent(QPaintEvent* e) Q_DECL_OVERRIDE;
155 virtual void resizeEvent(QResizeEvent* e) Q_DECL_OVERRIDE;
156 virtual void mouseMoveEvent(QMouseEvent* e) Q_DECL_OVERRIDE;
157 virtual void mousePressEvent(QMouseEvent* e) Q_DECL_OVERRIDE;
158 virtual void mouseReleaseEvent(QMouseEvent* e) Q_DECL_OVERRIDE;
159 virtual void focusOutEvent(QFocusEvent* e) Q_DECL_OVERRIDE;
160 virtual void leaveEvent(QEvent* e) Q_DECL_OVERRIDE;
161 virtual bool hitButton(const QPoint& pos) const Q_DECL_OVERRIDE;
162 virtual bool event(QEvent* e) Q_DECL_OVERRIDE;
163 virtual void changeEvent(QEvent* e) Q_DECL_OVERRIDE;
164 virtual void actionEvent(QActionEvent* e) Q_DECL_OVERRIDE;
165
166 // Paints the button's background and frame / 绘制按钮的背景和边框
167 virtual void paintButton(QPainter& p, const QStyleOptionToolButton& opt);
168 // Paints the button's icon / 绘制按钮的图标
169 virtual void paintIcon(QPainter& p, const QStyleOptionToolButton& opt, const QRect& iconDrawRect);
170 // Paints the button's text / 绘制按钮的文字
171 virtual void paintText(QPainter& p, const QStyleOptionToolButton& opt, const QRect& textDrawRect);
172 // Paints the button's indicator (e.g., dropdown arrow) / 绘制按钮的指示器(例如下拉箭头)
173 virtual void paintIndicator(QPainter& p, const QStyleOptionToolButton& opt, const QRect& indicatorDrawRect);
174
175private:
176 static void drawArrow(const QStyle* style,
177 const QStyleOptionToolButton* toolbutton,
178 const QRect& rect,
179 QPainter* painter,
180 const QWidget* widget = 0);
181};
182
183namespace SA
184{
185QDebug operator<<(QDebug debug, const QStyleOptionToolButton& opt);
186}
187#endif // SARIBBONTOOLBUTTON_H
Definition SARibbonToolButton.h:27
RibbonButtonType
Button type enumeration / 按钮样式枚举
Definition SARibbonToolButton.h:35
@ LargeButton
Large button type, corresponding to the large button in SARibbonBar / 大按钮类型,此类型对应SARibbonBar的大按钮
Definition SARibbonToolButton.h:39
Layout factor structure for fine-tuning button appearance / 用于微调按钮外观的布局系数结构体
Definition SARibbonToolButton.h:53