一、前言颜色按钮面板主要用在提供一个颜色按钮面板,用户单击某个按钮,然后拿到对应的颜色值,用户可以预先设定常用的颜色集合,传入到控件中,自动生成面板颜色集合按钮,每当滑过按钮的时候,按钮边缘高亮提示当前所在颜色的按钮,当选中某个按钮时,右侧颜色条
显示当前选中的颜色,此控件功能极其简单,直接采用动态生成按钮的方式,设置按钮的样式表来设置对应的颜色和高亮边框等,单击按钮发出颜色改变信号即可,对外提供该信号就行,非常适合初学者学习。
二、实现的功能 * 1:可设置颜色集合
* 2:可设置按钮圆角角度
* 3:可设置列数
* 4:可设置按钮边框宽度和边框颜色
三、效果图四、头文件代码- #ifndef COLORPANELBTN_H
- #define COLORPANELBTN_H
- /**
- * 颜色按钮面板 作者:feiyangqingyun(QQ:517216493) 2017-11-17
- * 1:可设置颜色集合
- * 2:可设置按钮圆角角度
- * 3:可设置列数
- * 4:可设置按钮边框宽度和边框颜色
- */
- #include <QWidget>
- class QGridLayout;
- class QPushButton;
- #ifdef quc
- #if (QT_VERSION < QT_VERSION_CHECK(5,7,0))
- #include <QtDesigner/QDesignerExportWidget>
- #else
- #include <QtUiPlugin/QDesignerExportWidget>
- #endif
- class QDESIGNER_WIDGET_EXPORT ColorPanelBtn : public QWidget
- #else
- class ColorPanelBtn : public QWidget
- #endif
- {
- Q_OBJECT
- Q_PROPERTY(int space READ getSpace WRITE setSpace)
- Q_PROPERTY(int columnCount READ getColumnCount WRITE setColumnCount)
- Q_PROPERTY(int borderRadius READ getBorderRadius WRITE setBorderRadius)
- Q_PROPERTY(int borderWidth READ getBorderWidth WRITE setBorderWidth)
- Q_PROPERTY(QColor borderColor READ getBorderColor WRITE setBorderColor)
- public:
- explicit ColorPanelBtn(QWidget *parent = 0);
- private:
- QGridLayout *gridLayout;
- QList<QPushButton *> btns;
- QStringList colors;
- int space; //按钮之间的间隔
- int columnCount; //按钮列数
- int borderRadius; //边框圆角
- int borderWidth; //边框宽度
- QColor borderColor; //边框颜色
- private slots:
- void initStyle();
- void initBtn();
- void btnClicked();
- public:
- QStringList getColors() const;
- int getSpace() const;
- int getColumnCount() const;
- int getBorderRadius() const;
- int getBorderWidth() const;
- QColor getBorderColor() const;
- QSize sizeHint() const;
- QSize minimumSizeHint() const;
- public Q_SLOTS:
- //设置颜色集合
- void setColors(const QStringList &colors);
- //设置按钮间隔
- void setSpace(int space);
- //设置列数
- void setColumnCount(int columnCount);
- //设置圆角角度
- void setBorderRadius(int borderRadius);
- //设置边框宽度
- void setBorderWidth(int borderWidth);
- //设置边框颜色
- void setBorderColor(const QColor &borderColor);
- Q_SIGNALS:
- void colorChanged(const QColor &color);
- };
- #endif // COLORPANELBTN_H
五、完整代码