标题:Qt编写自定义控件29-颜色选取面板
作者:liudianwu
日期:2019-07-14 21:07
内容:
一、前言
这个控件主要是模仿QColorDialog对话框中的颜色选取面板,提供一个十字形状的标识器,鼠标按下开始选取颜色,移动到哪就选择该处的颜色值,对应右侧颜色条放大显示,本控件的难点就是如何绘制一个边缘框限定鼠标只能在此框中移动,还有一个就是如何绘制颜色渐变的背景颜色集合,这里采用的是对每一个像素的高度区域设置不同的开始颜色+中间颜色+结束颜色,作为渐变颜色,然后设置QLinearGradient作为画笔的颜色进行绘制,其实就是假设宽度是100,其实是绘制了100条垂直方向的竖线而形成的效果。在绘制画布的时候,可以将其绘制到一个pixmap上,这样也方便待会鼠标移动时候直接取该pixmap的某个像素点的颜色值。
二、实现的功能
* 1:可设置当前百分比,用于控制指针大小
* 2:可设置边框宽度
* 3:可设置边框颜色
* 4:可设置指针颜色
三、效果图

四、头文件代码
#ifndef COLORPANELHSB_H
#define COLORPANELHSB_H
/**
* 颜色选取面板 作者:feiyangqingyun(QQ:517216493) 2017-11-17
* 1:可设置当前百分比,用于控制指针大小
* 2:可设置边框宽度
* 3:可设置边框颜色
* 4:可设置指针颜色
*/
#include
#ifdef quc
#if (QT_VERSION < QT_VERSION_CHECK(5,7,0))
#include
#else
#include
#endif
class QDESIGNER_WIDGET_EXPORT ColorPanelHSB : public QWidget
#else
class ColorPanelHSB : public QWidget
#endif
{
Q_OBJECT
Q_PROPERTY(int percent READ getPercent WRITE setPercent)
Q_PROPERTY(QColor borderColor READ getBorderColor WRITE setBorderColor)
Q_PROPERTY(QColor cursorColor READ getCursorColor WRITE setCursorColor)
Q_PROPERTY(QColor color READ getColor)
Q_PROPERTY(double hue READ getHue)
Q_PROPERTY(double sat READ getSat)
public:
explicit ColorPanelHSB(QWidget *parent = 0);
protected:
&nbs ..
#1 [305750665 07-15 09:12]
刘总回归,Qt江山都要抖一抖