SARibbon 2.5.1
SARibbon wiki
载入中...
搜索中...
未找到
SAColorToolButton.h
1#ifndef SACOLORTOOLBUTTON_H
2#define SACOLORTOOLBUTTON_H
3#include <QToolButton>
4#include "SAColorWidgetsGlobal.h"
5class QPaintEvent;
6class QResizeEvent;
7class QPainter;
8class QStylePainter;
9class SAColorMenu;
40class SA_COLOR_WIDGETS_API SAColorToolButton : public QToolButton
41{
42 Q_OBJECT
43 SA_COLOR_WIDGETS_DECLARE_PRIVATE(SAColorToolButton)
44public:
51 {
53 NoColorMenu
54 };
55
56public:
57 explicit SAColorToolButton(QWidget* parent = nullptr);
58 explicit SAColorToolButton(ColorToolButtonStyle style, QWidget* parent = nullptr);
60 // 获取颜色
61 QColor color() const;
62 // 设置Margins
63 void setMargins(const QMargins& mg);
64 QMargins margins() const;
65 // 绘制无颜色
66 static void paintNoneColor(QPainter* p, const QRect& colorRect);
67 // 设置颜色按钮的样式
68 void setColorToolButtonStyle(ColorToolButtonStyle s);
69 ColorToolButtonStyle colorToolButtonStyle() const;
70 // 获取colorMenu,注意,这个函数很有可能会返回nullptr,如果ColorToolButtonStyle设置为NoColorMenu或者自己设置了菜单,此函数返回nullptr
71 SAColorMenu* colorMenu() const;
72 // 建立标准的颜色菜单
73 SAColorMenu* createColorMenu();
74public Q_SLOTS:
75 // 设置颜色,会发射colorChanged信号
76 void setColor(const QColor& c);
77
78protected:
79 // 获取关键的三个rect位置
80 virtual void calcRect(const QStyleOptionToolButton& opt, QRect& iconRect, QRect& textRect, QRect& colorRect);
81 virtual void paintButton(QStylePainter* p, const QStyleOptionToolButton& opt);
82 virtual void paintIcon(QStylePainter* p, const QRect& iconRect, const QStyleOptionToolButton& opt);
83 virtual void paintText(QStylePainter* p, const QRect& textRect, const QStyleOptionToolButton& opt);
84 virtual void paintColor(QStylePainter* p, const QRect& colorRect, const QColor& color, const QStyleOptionToolButton& opt);
85
86protected:
87 virtual void paintEvent(QPaintEvent* e) Q_DECL_OVERRIDE;
88 virtual void resizeEvent(QResizeEvent* e) Q_DECL_OVERRIDE;
89 virtual QSize sizeHint() const Q_DECL_OVERRIDE;
90private Q_SLOTS:
91 void onButtonClicked(bool checked = false);
92Q_SIGNALS:
97 void colorClicked(const QColor& color, bool checked = false);
102 void colorChanged(const QColor& color);
103};
104
105#endif // SACOLORTOOLBUTTON_H
标准颜色菜单
Definition SAColorMenu.h:13
这是一个只显示颜色的toolbutton
Definition SAColorToolButton.h:41
ColorToolButtonStyle
颜色按钮的内置样式
Definition SAColorToolButton.h:51
@ WithColorMenu
默认会构建一个SAColorMenu
Definition SAColorToolButton.h:52