painter

Qt编写自定义控件30-颜色多态按钮

爷,独闯天下 提交于 2019-11-30 18:01:02
一、前言 这个控件一开始打算用样式表来实现,经过初步的探索,后面发现还是不够智能以及不能完全满足需求,比如要在此控件设置多个角标,这个用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

Qt编写自定义控件29-颜色选取面板

大城市里の小女人 提交于 2019-11-30 18:00:45
一、前言 这个控件主要是模仿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 <QWidget> #ifdef quc #if (QT_VERSION < QT

Qt编写自定义控件15-百分比仪表盘

*爱你&永不变心* 提交于 2019-11-30 18:00:21
前言 百分比仪表盘,主要的应用场景是展示销售完成率、产品合格率等,也可以作为一个进度百分比展示,可以独立设置对应的标题文字,标题文字的颜色和整体的颜色都可以单独设置,建议设置成统一的风格,这样会显得更加美观,贴一张星空图作为背景就更美观,本控件也是作为大屏UI界面的一个子控件,用来展示产品的合格率。 实现的功能 1:可设置范围值,支持负数值 2:可设置精确度,最大支持小数点后3位 3:可设置大刻度数量/小刻度数量 4:可设置开始旋转角度/结束旋转角度 5:可设置仪表盘的标题 6:可设置外圆背景/内圆背景/饼圆三种颜色/刻度尺颜色/文字颜色 7:自适应窗体拉伸,刻度尺和文字自动缩放 8:可自由拓展各种渐变色,各圆的半径 效果图 头文件代码 #ifndef GAUGEPERCENT_H #define GAUGEPERCENT_H /** * 百分比仪表盘控件 作者:feiyangqingyun(QQ:517216493) 2018-8-30 * 1:可设置范围值,支持负数值 * 2:可设置精确度,最大支持小数点后3位 * 3:可设置大刻度数量/小刻度数量 * 4:可设置开始旋转角度/结束旋转角度 * 5:可设置仪表盘的标题 * 6:可设置外圆背景/内圆背景/饼圆三种颜色/刻度尺颜色/文字颜色 * 7:自适应窗体拉伸,刻度尺和文字自动缩放 * 8:可自由拓展各种渐变色,各圆的半径 */

Qt编写自定义控件31-面板仪表盘控件

流过昼夜 提交于 2019-11-30 17:59:45
一、前言 在Qt自定义控件中,仪表盘控件是数量最多的,写仪表盘都写到快要吐血,可能是因为各种工业控制领域用的比较多吧,而且仪表盘又是比较生动直观的,这次看到百度的echart中有这个控件,所以也来模仿做了一个,其实掌握了一两个仪表盘的绘制方法以后,其他仪表盘的绘制都是如鱼得水,基本上变化很小。总结起来就如下几点: 1:仪表盘边框 2:刻度尺 3:刻度值 4:圆环进度 5:指针 6:当前值 7:仪表盘标题 无论什么仪表盘,基本上包含的上面几个要素的大部分,所以只要掌握几个要素的绘制,任何仪表盘绘制都是轻轻松松信手拈来。无非就是有些仪表盘要求刻度尺在里边有些要求在外边,有些要求有圆环进度不同颜色显示,有些要求可以自定义左侧起始角度和右侧结束角度,有些要求指针圆形方形椭圆形等,有些要求值改变的时候带一些缓慢的动画过渡效果等。 二、实现的功能 1:可设置范围值,支持负数值 2:可设置精确度+刻度尺精确度,最大支持小数点后3位 3:可设置大刻度数量/小刻度数量 4:可设置开始旋转角度/结束旋转角度 5:可设置是否启用动画效果以及动画效果每次移动的步长 6:可设置刻度颜色+文字颜色+圆环的宽度和颜色 7:自适应窗体拉伸,刻度尺和文字自动缩放 8:可设置单位以及仪表盘名称 三、效果图 四、头文件代码 #ifndef GAUGEPANEL_H #define GAUGEPANEL_H /** *

Qt编写自定义控件62-探探雷达

独自空忆成欢 提交于 2019-11-30 17:56:11
一、前言 随着移动互联网的盛行,现在手机APP大行其道,每个人的手机没有十几个APP都不好意思说自己是现代人,各种聊天、购物、直播、小视频等APP,有个陌生人社交的APP叫探探,本人用过几次,当然不是去为了找对象,而是纯粹为了好玩研究下他的U设计和软件逻辑流程等,其中有个雷达控件,单击以后可以搜索附近的异性进行配对,这个雷达控件的效果蛮好的,于是手痒琢磨着用Qt来实现一个,毕竟自己写了150多个控件了,已经上瘾了,对各种效果都如鱼得水,看到各种效果都不自然的想到编码思路等。 这个控件的核心其实就是外围的那个扫描圈和发散的扫描线,中间变大变小恢复正常的圆形头像,外围的扫描圈采用锥形渐变颜色,通过透明度控制形成扫描效果,核心方法就是drawPie,至于扩散圈,需要识别到单击以后将扩散圈存入队列,因为可能会单击多次,产生多个扩散圈,至于中间头像的动态效果,采用三个QPropertyAnimation来实现,一个负责变大,一个负责变小,一个负责恢复正常,然后三个动画加入到QSequentialAnimationGroup动画序列中,按照顺序执行。 二、实现的功能 1:可设置中间图像 2:可设置图像的边框宽度+边框颜色,产生圆形图像效果 3:可设置扫描线的最大半径 4:可设置扫描线的边框宽度 5:可设置扩散圈的线条宽度 6:可设置扫描线的每次移动的步长 7:可设置扩散圈的每次移动的步长 8

Qt编写自定义控件60-声音波形图

女生的网名这么多〃 提交于 2019-11-30 12:02:02
一、前言 这个控件源自于一个音乐播放器,在写该音乐播放器的时候,需要将音频的数据转换成对应的频谱显示,采用的fmod第三方库来处理(fmod声音系统是为游戏开发者准备的革命性音频引擎,非常强大和牛逼),fmod负责拿到音频数据对应的采样频谱数据,然后传给这个控件进行绘制即可,本控件主需要专注于绘制即可,这样fmod对应封装的类专注于音频采集等处理,实现了隔离,修改和增加功能比较方便,声音波形图控件除了可以设置采样的深度以外,还支持三种数据样式展示,线条样式、柱状样式、平滑样式。为了可以直接定位到某一位置直接跳转到音频位置,还增加了绘制数线条定位线。 二、实现的功能 1:可设置采样深度 2:可设置当前位置线条宽度/线条颜色 3:可设置前景色/背景色 4:可设置数据展示样式,线条样式/柱状样式/平滑样式 三、效果图 四、头文件代码 #ifndef WAVEDATA_H #define WAVEDATA_H /** * 音量采样值波形控件 作者:feiyangqingyun(QQ:517216493) 2017-9-10 * 1:可设置采样深度 * 2:可设置当前位置线条宽度/线条颜色 * 3:可设置前景色/背景色 * 4:可设置数据展示样式,线条样式/柱状样式/平滑样式 */ #include <QWidget> #ifdef quc #if (QT_VERSION < QT

Qt之有关于Painter的理解

和自甴很熟 提交于 2019-11-30 11:21:54
1、如果想要使用QPainter在某个控件上绘图,必须重写这个控件的PaintEvent事件。否则“ QWidget::paintEngine: Should no longer be called ” 2、对于 inline void QPainter ::drawEllipse( const QPoint &center, int rx, int ry) center是椭圆圆心,当rx = ry时,这个就是一个圆了。 p.drawEllipse(QPoint(95, 333), 50, 50); p.drawEllipse(QPoint(95, 333), 70, 50); 3、画家设置画笔,画刷,字体以及反走样 void Widget::paintEvent(QPaintEvent *) { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); //反锯齿 painter.setPen(QPen(Qt::red, 2, Qt::DashLine)); painter.setBrush(Qt::yellow); painter.setFont(QFont("aaa", 40, 700, true)); //"aaa"系统会默认挑选一个预先定义的字体 painter.drawText

Qt编写自定义控件59-直方动态图

六月ゝ 毕业季﹏ 提交于 2019-11-30 10:15:18
一、前言 直方动态图类似于音乐播放时候的柱状图展示,顶部提供一个横线条,当柱状上升的时候,该线条类似于帽子的形式冲到顶端,相当于柱状顶上去的感觉,给人一种动态的感觉,听音乐的同时更加赏心悦目,原理比较简单,就是用2个定时器,一个定时器间隔比较短,负责快速把柱状图从底部冲到设置的值,同时横线条跟随一起冲上去,一个定时器负责慢慢的跌落值到0,然后横线条缓慢下降,下降速度比柱状图的速度要慢一些,产生一种对比的效果,看起来更像是跌落的感觉。 二、实现的功能 1:可设置最大值/最小值/当前值 2:可设置顶部滑块高度 3:可设置每次变动的步长 4:可设置item之间的间隔 5:可设置渐变的背景颜色 6:可设置柱状条颜色 三、效果图 四、头文件代码 #ifndef WAVEBAR_H #define WAVEBAR_H /** * 直方动态图控件 作者:feiyangqingyun(QQ:517216493) 2016-11-6 * 1:可设置最大值/最小值/当前值 * 2:可设置顶部滑块高度 * 3:可设置每次变动的步长 * 4:可设置item之间的间隔 * 5:可设置渐变的背景颜色 * 6:可设置柱状条颜色 */ #include <QWidget> #ifdef quc #if (QT_VERSION < QT_VERSION_CHECK(5,7,0)) #include

Qt编写自定义控件58-直方对称图

瘦欲@ 提交于 2019-11-30 06:56:03
一、前言 本控件也非原创控件,是参考网上的代码而来的,对称顾名思义就是将画布平均成上下两部分,将设置的值自动按照画布高度的一半作为参照高度进行绘制,然后增加动态过渡效果,有点类似于声音播放时候的频谱效果,一般都会用多个直方对称图组合成一个控件来实现多个效果,看起来会更美观,背景颜色可以设置成渐变的,柱状条的颜色也可以自行设置。 二、实现的功能 1:可设置最大值/最小值/当前值 2:可设置每次过渡的步长 3:可设置item之间的间隔 4:可设置渐变的背景颜色 5:可设置柱状条的颜色 三、效果图 四、头文件代码 #ifndef WAVEDOUBLE_H #define WAVEDOUBLE_H /** * 直方对称图控件 作者:feiyangqingyun(QQ:517216493) 2016-11-6 * 1:可设置最大值/最小值/当前值 * 2:可设置每次过渡的步长 * 3:可设置item之间的间隔 * 4:可设置渐变的背景颜色 * 5:可设置柱状条的颜色 */ #include <QWidget> #ifdef quc #if (QT_VERSION < QT_VERSION_CHECK(5,7,0)) #include <QtDesigner/QDesignerExportWidget> #else #include <QtUiPlugin

Qt编写自定义控件57-直方波形图

拈花ヽ惹草 提交于 2019-11-30 06:08:51
一、前言 直方波形图控件非原创控件,控件大全中大概有20-30个控件非自己原创,而是参考了网上开源的代码,自己加以整理和完善,新增了插件的代码使得可以直接集成到QtDesigner或者QtCreator中。直方波形图,主要就是将外部传入的坐标集合数据进行渐变过渡的绘制,产生一个动态的过渡效果,将设置的坐标集合重新运算+1变成新的坐标集合来绘制,这样看起来绘制不会很死,而是缓慢的过渡。 二、实现的功能 1:可设置最大值 2:可设置每次过渡的步长 3:可设置item之间的间隔 4:可设置渐变的背景颜色 5:可设置线条的颜色 三、效果图 四、头文件代码 #ifndef WAVELINE_H #define WAVELINE_H /** * 直方波形图控件 作者:feiyangqingyun(QQ:517216493) 2016-11-6 * 1:可设置最大值 * 2:可设置每次过渡的步长 * 3:可设置item之间的间隔 * 4:可设置渐变的背景颜色 * 5:可设置线条的颜色 */ #include <QWidget> #ifdef quc #if (QT_VERSION < QT_VERSION_CHECK(5,7,0)) #include <QtDesigner/QDesignerExportWidget> #else #include <QtUiPlugin