首页| 论坛| 消息

标题:Qt编写自定义控件30-颜色多态按钮
作者:liudianwu
日期:2019-07-14 21:52
内容:

一、前言
这个控件一开始打算用样式表来实现,经过初步的探索,后面发现还是不够智能以及不能完全满足需求,比如要在此控件设置多个角标,这个用QSS就很难实现,后面才慢慢研究用QPainter来绘制,我记得当时接到这个定制控件任务的时候是2016年,那时候对QPainter的使用还不是很熟悉,也就是从此控件开始,逐步研究QPainter的绘制,把所有的内置函数都使用一遍,最终用的越来越熟悉,使得后来到了心中有坐标,万物皆painter的境界,可能就像武林中所说的打通了任督二脉吧。
本控件除了可以设置常规的圆角角度,边框宽度,边框颜色,正常颜色,按下颜色以外,还可以设置各个角标和正文文字内容/字体/对齐方式/颜色,同时还要提供三种颜色展示模式,松开按下两种颜色,按下松开颜色上下交替,按下松开颜色渐变交替。QLinearGradient是个好东西,各种颜色交替效果全靠它来实现。
二、实现的功能
* 1:可设置圆角角度,边框宽度
* 2:可设置角标和正文文字内容/字体/对齐方式/颜色
* 3:可设置边框颜色,正常颜色,按下颜色
* 4:可设置背景图片
* 5:可设置按钮颜色模式
三、效果图
.
四、头文件代码
#ifndef COLORBUTTON_H
#define COLORBUTTON_H
/**
* 多样式超级按钮控件 作者:feiyangqingyun(QQ:517216493) 2017-9-24
* 1:可设置圆角角度,边框宽度
* 2:可设置角标和正文文字内容/字体/对齐方式/颜色
* 3:可设置边框颜色,正常颜色,按下颜色
* 4:可设置背景图片
* 5:可设置按钮颜色模式
*/
#include
#ifdef quc
#if (QT_VERSION < QT_VERSION_CHECK(5,7,0))
#include
#else
#include
#endif
class QDESIGNER_WIDGET_EXPORT ColorButton : public QWidget
#else
class ColorButton : public QWidget
#endif
{
Q_OBJECT
Q_ENUMS(ColorMode)
Q_ENUMS(TextAlign)
Q_PROPERTY(int borderRadius READ getBorderRadius WRITE setBorderRadius)
Q_PROPERTY(int borderWidth READ getBorderWidth WRITE setBorderWidth)
Q_PROPER ..


#1 [305750665 07-15 09:10]
刘总又开始霸屏了

回复 发表
主题 版块