painter

Qt编写自定义控件56-波浪曲线

[亡魂溺海] 提交于 2019-11-30 05:24:25
一、前言 波浪曲线控件,其实是之前一个水波进度条控件的一个核心,其实就是利用正弦曲线来生成对应的坐标进行绘制,把这个功能单独提取出来,是为了更详细的研究各种正弦余弦等拓展效果,当时写这个效果的时候,参考的是网上android绘制的水波效果的代码,然后自己重新理解以后,整理成Qt的版本,拓展了部分效果比如可以设置浪的高度,浪的密度,密度越大越浪,^_^,演示控件效果提供了滑块来设置对应的参数。 二、实现的功能 1:可设置波浪的速度 2:可设置波浪的高度 3:可设置波浪的密度,密度越大越浪 4:可设置背景颜色 5:可设置波浪颜色 三、效果图 四、头文件代码 #ifndef WAVEPLOT_H #define WAVEPLOT_H /** * 正弦曲线控件 作者:feiyangqingyun(QQ:517216493) 2017-2-10 * 1:可设置波浪的速度 * 2:可设置波浪的高度 * 3:可设置波浪的密度,密度越大越浪 * 4:可设置背景颜色 * 5:可设置波浪颜色 */ #include <QWidget> #ifdef quc #if (QT_VERSION < QT_VERSION_CHECK(5,7,0)) #include <QtDesigner/QDesignerExportWidget> #else #include <QtUiPlugin

Qt编写自定义控件56-波浪曲线

吃可爱长大的小学妹 提交于 2019-11-30 05:24:09
一、前言 波浪曲线控件,其实是之前一个水波进度条控件的一个核心,其实就是利用正弦曲线来生成对应的坐标进行绘制,把这个功能单独提取出来,是为了更详细的研究各种正弦余弦等拓展效果,当时写这个效果的时候,参考的是网上android绘制的水波效果的代码,然后自己重新理解以后,整理成Qt的版本,拓展了部分效果比如可以设置浪的高度,浪的密度,密度越大越浪,^_^,演示控件效果提供了滑块来设置对应的参数。 二、实现的功能 1:可设置波浪的速度 2:可设置波浪的高度 3:可设置波浪的密度,密度越大越浪 4:可设置背景颜色 5:可设置波浪颜色 三、效果图 四、头文件代码 #ifndef WAVEPLOT_H #define WAVEPLOT_H /** * 正弦曲线控件 作者:feiyangqingyun(QQ:517216493) 2017-2-10 * 1:可设置波浪的速度 * 2:可设置波浪的高度 * 3:可设置波浪的密度,密度越大越浪 * 4:可设置背景颜色 * 5:可设置波浪颜色 */ #include <QWidget> #ifdef quc #if (QT_VERSION < QT_VERSION_CHECK(5,7,0)) #include <QtDesigner/QDesignerExportWidget> #else #include <QtUiPlugin

Qt编写自定义控件54-时钟仪表盘

不羁的心 提交于 2019-11-30 03:47:31
一、前言 这个控件没有太多的应用场景,主要就是练手,论美观的话比不上之前发过的一个图片时钟控件,所以此控件也是作为一个基础的绘制demo出现在Qt源码中,我们可以在Qt的安装目录下找到一个时钟控件的绘制,甚至还有qml版本,本控件无非就是一个仪表边框加上时钟分钟刻度再加上时分秒指针,打完收工,我是在此基础上增加了可以设置各种颜色,然后鼠标右键可设置四种效果 普通效果/弹簧效果/连续效果/隐藏效果,弹簧效果的意思是秒钟走动的时候,先移动到超过指定位置,然后又重新弹回来,连续效果的意思是将步长减少,一点点的移动,将秒钟的定时器精度调高。还有一个新增的功能是内置了设置系统时间公共槽函数,支持任意操作系统。 二、实现的功能 1:可设置边框颜色 2:可设置前景色背景色 3:可设置时钟分钟秒钟指针颜色 4:可设置刷新间隔 5:鼠标右键可设置四种效果 普通效果/弹簧效果/连续效果/隐藏效果 6:增加设置系统时间公共槽函数,支持任意操作系统 三、效果图 四、头文件代码 #ifndef GAUGECLOCK_H #define GAUGECLOCK_H /** * 时钟仪表盘控件 作者:feiyangqingyun(QQ:517216493) 2016-10-23 * 1:可设置边框颜色 * 2:可设置前景色背景色 * 3:可设置时钟分钟秒钟指针颜色 * 4:可设置刷新间隔 * 5

Qt使用九宫格原理缩放图片

折月煮酒 提交于 2019-11-29 21:31:38
9宫格缩放规则如下: 1、将一张图分割成9块 2、四个角(1,3,7,9)在缩放的时候是保持大小不变 3、图块2,8仅当宽度变化时缩放宽度。 4、图块4,6仅当高度变化时缩放高度。 5、图块5当图片大小发生变化,宽度和高度都进行缩放。 /* ** 功能 : 九宫格图处理 ** picName : 图片名字 ** iHorzSplit : 四个角上格子的宽度 ** iVertSplit : 四个角上格子的高度 ** DstWidth : 整个图片缩放的宽度 ** DstWidth : 整个图片缩放的高度 ** 返回值 : 处理完成的图片 */ QPixmap* NinePatch(QString& picName,int iHorzSplit,int iVertSplit, int DstWidth, int DstHeight) { QPixmap* pix = new QPixmap(picName); int pixWidth = pix->width(); int pixHeight = pix->height(); QPixmap pix_1 = pix->copy(0, 0, iHorzSplit, iVertSplit); QPixmap pix_2 = pix->copy(iHorzSplit, 0, pixWidth-iHorzSplit*2, iVertSplit

Qt编写自定义控件51-可输入仪表盘

守給你的承諾、 提交于 2019-11-29 18:46:59
一、前言 这个控件是近期定制的控件,还是比较实用的控件之一,用户主要是提了三点需求,一点是切换焦点的时候控件放大突出显示,一点是可直接输入或者编辑值,还有一点是支持上下键及翻页键和鼠标滚轮来动态修改值,类似于qspinbox控件。要能够支持直接输入首先想到的就是qlineedit控件,在原有的仪表盘控件上中间部分,放置一个qlineedit控件用来输入值,采用正则表达式来限制只能输入数字,为了使得qlinedit和自定义绘制的仪表盘完全融为一体,必须设置qlineedit的样式为背景透明,至于输入框的位置,有个小技巧就是直接将输入框设置为控件的大小,这样输入的焦点永远在控件的中间,完全混合,丝毫看不出是一个输入框控件插在那里,至于上下键及翻页键和鼠标滚轮,直接安装事件过滤器即可识别到,进行对应的处理即可。 二、实现的功能 1:可设置范围值,支持负数值 2:可设置开始旋转角度/结束旋转角度 3:可设置是否启用动画效果以及动画效果每次移动的步长 4:可设置外圆背景/内圆背景/进度颜色/空余颜色/文字颜色 5:自适应窗体拉伸,文字自动缩放 6:支持tab及鼠标按下切换焦点 7:支持直接输入值立即应用 8:获取焦点控件自动变大 9:支持键盘上下键步长为1修改值 10:支持上下翻页键步长为10修改值 11:支持鼠标滚轮步长为1修改值 三、效果图 四、头文件代码 #ifndef

Qt编写自定义控件26-平铺背景控件

ε祈祈猫儿з 提交于 2019-11-29 18:16:52
一、前言 平铺背景控件,主要的应用场景是作为画布出现,黑白相间的背景图,然后上面可以放置图片图形等,使得看起来更美观,比如PS软件新建图层以后的背景,FireWorks软件新建画布以后的透明背景,ICO制作软件新建画布以后的背景,都会采用一个黑白相间的背景。尽管本人用QPainter很多年,后面在翻阅QPainter自带的函数中才发现居然QPainter自带了这个绘制平铺背景的函数,擦,他么叫drawTiledPixmap,Qt不愧是跨平台GUI开发中的佼佼者,这些东西居然都考虑到了,说到考虑的周到,Qt中连size和count和length都完美的封装了,适合不同人群的使用习惯,这个考虑也是非常周到的。drawTiledPixmap就两个参数,第一个参数是要绘制的区域,第二个参数是要绘制的图片,图片不足会自动拷贝填充,所以如果提供的是两个交替颜色的背景图片,就会依次绘制形成平铺背景的效果,为了使得颜色可以控制,本控件增加了交替颜色的设置,可以自行传入两种颜色作为交替颜色,在程序内部自动生成要绘制的图片。 二、实现的功能 1:可设置交替背景颜色 三、效果图 四、头文件代码 #ifndef TILEDBG_H #define TILEDBG_H /** * 平铺背景控件 作者:feiyangqingyun(QQ:517216493) 2018-8-25 * 1:可设置交替背景颜色 *

Qt编写自定义控件20-自定义饼图

白昼怎懂夜的黑 提交于 2019-11-29 18:15:39
一、前言 上次在写可视化数据大屏电子看板项目的时候,为了逐步移除对QChart的依赖(主要是因为QChart真的太垃圾了,是所有Qt的模块中源码最烂的一个,看过源码的人没有一个不吐槽,不仅不支持10W级别的数据量曲线展示,居然一个饼图控件,文字部分的展示还用QLabel来显示的,这么低效率的方式都有),起初曲线图和柱状图等都用QCustomPlot替代了,就剩一个饼图需要自己用无敌的QPainter来绘制了,绘制对应的背景区域难度不大,稍微会用QPainter的人都可以实现,用的就是drawPie绘制即可,关键是如何在自己所在的区域绘制对应的文字和百分比,这个需要找到对应区域,然后找到合理的位置摆放文字,这个可能就需要用到一点数学知识了,从圆中心开始,给定对应的角度,对应的偏离值,计算偏离值对应的中心点坐标,此坐标作为绘制文字区域的中心,然后四周扩散一定的距离即可。 二、实现的功能 1:可设置文字颜色 2:可设置边框颜色 3:可设置颜色集合 4:可设置某个区域是否弹出 5:可设置是否显示百分比 三、效果图 四、头文件代码 #ifndef CUSTOMPIE_H #define CUSTOMPIE_H /** * 自定义饼图控件 整理:feiyangqingyun(QQ:517216493) 2019-5-21 * 1:可设置文字颜色 * 2:可设置边框颜色 * 3:可设置颜色集合

Qt编写自定义控件11-设备防区按钮控件

余生颓废 提交于 2019-11-29 18:15:26
前言 在很多项目应用中,需要根据数据动态生成对象显示在地图上,比如地图标注,同时还需要可拖动对象到指定位置显示,能有多种状态指示,安防领域一般用来表示防区或者设备,可以直接显示防区号,有多种状态颜色指示,例如布防、撤防、旁路、报警、离线、在线等状态,可以作为一个通用的设备按钮对象使用。 实现的功能 1:可设置防区样式 圆形、警察、气泡、气泡2、消息、消息2 2:可设置防区状态 布防、撤防、报警、旁路、故障 3:可设置报警切换 4:可设置显示的防区号 5:可设置是否可鼠标拖动 效果图 头文件代码 #ifndef BUTTONDEFENCE_H #define BUTTONDEFENCE_H /** * 防区按钮控件 作者:feiyangqingyun(QQ:517216493) 2018-7-2 * 1:可设置防区样式 圆形、警察、气泡、气泡2、消息、消息2 * 2:可设置防区状态 布防、撤防、报警、旁路、故障 * 3:可设置报警切换 * 4:可设置显示的防区号 * 5:可设置是否可鼠标拖动 */ #include <QWidget> #ifdef quc #if (QT_VERSION < QT_VERSION_CHECK(5,7,0)) #include <QtDesigner/QDesignerExportWidget> #else #include <QtUiPlugin

QT--吃月亮小游戏

前提是你 提交于 2019-11-29 14:39:24
QT--吃月亮小游戏 简介: 该设计使用了 鼠标事件 、 键盘事件 、 绘图事件 ,可通过鼠标或者方向键控制人物移动吃到月亮 代码: widget.h文件: #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QPaintEvent> //绘图事件 #include <QMouseEvent> //鼠标 #include <QPoint> #include <QKeyEvent> //键盘 #include <QPainter> #include <QList> #include <QLineEdit> namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = nullptr); ~Widget(); public: int random_x; //保存月亮随机坐标 int random_y; int direction; //保存键盘事件 int Score = 0; //得分 QString Score_data; //保存得分 bool meet = false; QPainter *painter; QLineEdit *line;

Qt编写自定义控件36-图片浏览器

半城伤御伤魂 提交于 2019-11-29 14:26:34
一、前言 本控件主要用来作为一个简单的图片浏览器使用,可以上下翻页显示图片,图片还可以开启过度效果比如透明度渐变,应用场景有查看报警图片运行图片等。此控件非本人原创,来源于网络,我只是修正了好多处BUG,并完善了各种操作方式。比如增加鼠标右键清空、增加背景色、增加键盘翻页、增加移动到第一张/末一张/上一张/下一张 等, 控件没有什么难度,主要就是打开文件夹,自动计算文件夹下的所有文件存储到队列中,队列中可以是图片的完整路径,也可以是图片,可以切换,如果选择内存加载模式则会自动将路径转为图片,这样的话有个好处,就是在翻页查看图片的时候速度会非常的快,因为直接显示的是内存中的图片,而不需要重新加载路径,毕竟路径加载图片又需要重新读取硬盘。 二、实现的功能 1:增加鼠标右键清空 2:增加设置背景色 3:增加设置间距和翻页图标大小 4:增加设置是否拉伸填充显示 5:增加设置是否渐变显示图像 6:增加设置键盘翻页 7:增加移动到第一张/末一张/上一张/下一张 8:修正内存泄露BUG及其他BUG 三、效果图 四、头文件代码 #ifndef IMAGEVIEW_H #define IMAGEVIEW_H /** * 图片浏览器控件 作者:feiyangqingyun(QQ:517216493) 2016-10-16 * 本控件来源于网络(原作者:kimtaikee(http://www.qtcn