painter

Qt编写自定义控件19-图片背景时钟

落爺英雄遲暮 提交于 2019-11-29 14:26:00
前言 图片背景时钟控件,是全套控件(目前共145个)中唯一的几个贴图的控件,这个背景要是不贴图,会画到猝死,必须用美工做好的图贴图作为背景,此控件以前学C#的时候写过,后面在写Qt控件的过程中把他移植过来了,其实画法完全一模一样,我能说连代码我都是直接复制粘贴过来改改的吗?所以有过多年编程经验的程序员们都知道,编程都是一通百通的,只要掌握好了一门,或者精通了一门,其他都是水到渠成的事情,基本上学习个把星期都能直接撸的那种,配合F1帮助文档和官方手册,直接手撸起来(各位别多想,是指撸代码)。 贴图的控件都很简单,直接drawimage完事,本控件除了支持多种背景风格样式以外,还特意增加了指针走动风格样式,直接鼠标右键切换风格等。 实现的功能 1:支持鼠标右键切换风格 2:支持设置四种背景风格样式 3:支持四种秒针走动风格样式 4:增加设置时间接口 效果图 头文件代码 #ifndef IMAGECLOCK_H #define IMAGECLOCK_H /** * 图片时钟控件 作者:feiyangqingyun(QQ:517216493) 2016-11-4 * 1:支持鼠标右键切换风格 * 2:支持设置四种背景风格样式 * 3:支持四种秒针走动风格样式 * 4:增加设置时间接口 */ #include <QWidget> #ifdef quc #if (QT_VERSION < QT

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

对着背影说爱祢 提交于 2019-11-29 14:25:46
一、前言 这个控件没有太多的应用场景,主要就是练手,论美观的话比不上之前发过的一个图片时钟控件,所以此控件也是作为一个基础的绘制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编写自定义控件59-直方动态图

こ雲淡風輕ζ 提交于 2019-11-28 18:15:44
一、前言 直方动态图类似于音乐播放时候的柱状图展示,顶部提供一个横线条,当柱状上升的时候,该线条类似于帽子的形式冲到顶端,相当于柱状顶上去的感觉,给人一种动态的感觉,听音乐的同时更加赏心悦目,原理比较简单,就是用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-28 18:15:29
一、前言 本控件也非原创控件,是参考网上的代码而来的,对称顾名思义就是将画布平均成上下两部分,将设置的值自动按照画布高度的一半作为参照高度进行绘制,然后增加动态过渡效果,有点类似于声音播放时候的频谱效果,一般都会用多个直方对称图组合成一个控件来实现多个效果,看起来会更美观,背景颜色可以设置成渐变的,柱状条的颜色也可以自行设置。 二、实现的功能 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编写自定义控件60-声音波形图

早过忘川 提交于 2019-11-28 18:15:19
一、前言 这个控件源自于一个音乐播放器,在写该音乐播放器的时候,需要将音频的数据转换成对应的频谱显示,采用的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编写自定义控件66-光晕时钟

蓝咒 提交于 2019-11-28 15:13:13
一、前言 在上一篇文章写了个高仿WIN10系统的光晕日历,这次来绘制一个光晕的时钟,也是在某些网页上看到的效果,时分秒分别以进度条的形式来绘制,而且这个进度条带有光晕效果,中间的日期时间文字也是光晕效果,整体看起来有点科幻的感觉,本控件没有什么技术难点,如果真要有难点的话也就是如何产生这个光晕效果,在使用painter绘制的时候,设置画笔,可以设置brush,brush可以是各种渐变效果,这个就非常强大了,主要有线性渐变、圆形渐变、锥形渐变,这三种渐变用得好,各种效果都得心应手随手拈来。 为了产生光晕效果,需要用到圆形渐变,并对圆形渐变中的不同的位置设置透明度值来处理,时分秒对应的进度可以自动计算出来,这个不难,比如直接用QTime可以获取对应的时分秒,然后时钟和分钟除以60,秒钟除以1000来获取对应的进度。绘制光晕文本采用的QPainterPath的addText来实现。 二、实现的功能 1:可设置圆弧半径宽度 2:可设置光晕宽度 3:可设置光晕颜色 4:可设置文本颜色 5:采用动画机制平滑进度展示时间 三、效果图 四、头文件代码 #ifndef SHADOWCLOCK_H #define SHADOWCLOCK_H /** * 光晕时钟控件 作者:雨田哥(QQ:3246214072) 整理:feiyangqingyun(QQ:517216493) 2019-10-07 * 1

Qt编写数据可视化大屏界面电子看板11-自定义控件

白昼怎懂夜的黑 提交于 2019-11-28 15:12:31
一、前言 说到自定义控件,我是感觉特别熟悉的几个字,本人亲自原创的自定义控件超过110个,都是来自各个行业的具体应用真实需求,而不是凭空捏造的,当然有几个小控件也有点凑数的嫌疑,在编写整个数据可视化大屏界面电子看板系统中,也用到了四五个自定义的控件,比如那个环形百分比图,多态进度条,合格率仪表盘,速度仪表盘等,这些控件在现有的类中是没有的,需要用QPainter这个牛逼的工具来绘制,类似于神笔马良似的,给我一个画笔,可以画出任意你想要的图形,好比我常说的心中有坐标,万物皆painter。 自定义控件为了适应整体换肤,需要用Q_PROPERTY类指定,类似于元对象,用Q_PROPERTY指定的东西,可以直接样式表控制,比如GaugePercent{qproperty-baseColor:#FF0000;}就可以对所有的GaugePercent类进行颜色更换,而且是动态更换,用Q_PROPERTY指定的东西还可以直接出现在Qtcreator的右侧属性栏,直接修改属性即可,所见即所得,非常方便。 二、电子看板介绍 电子看板是目视化管理的一种表现形式,即对数据的状况一目了然地表现,主要是对于管理项目,它通过利用形象直观而又色彩适宜的各种视觉感知信息来组织现场生产活动,目视管理依据人类的生理特征,在生产现场充分利用信号灯、标识牌、符号颜色等方式来发出视觉信号,鲜明准确地刺激人的神经末梢

Qt重绘控件之时速表

霸气de小男生 提交于 2019-11-28 05:39:05
Qt重绘简易时速表 效果: 使用时,将该类作为QWidget的提升或直接拿来new即可! classProgress : publicQWidget { Q_OBJECT public: Progress(QWidget *parent = 0); ~Progress(); protected: unsignedinttimerId; voidtimerEvent(QTimerEvent *event); voidpaintEvent(QPaintEvent *event); voidinitPainter(); voiddrawY3(QPainter *); voiddrawOut(QPainter *); publicslots: voidsetValue(int); private: QPointFcenterPol; floatradius; unsignedintvalue,currentValue; }; Progress::Progress(QWidget *parent) : QWidget(parent) { timerId = 0; value = currentValue = 0; } Progress::~Progress() { } voidProgress::timerEvent(QTimerEvent *event) { if (event-

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

泪湿孤枕 提交于 2019-11-27 12:23:10
一、前言 直方波形图控件非原创控件,控件大全中大概有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

AcWing 298. 围栏 (POJ1821)

北城以北 提交于 2019-11-27 11:13:47
标签(空格分隔): dp 单调队列优化 题目描述 有N块木板从左到右排成一行,有M个工匠对这些木板进行粉刷,每块木板至多被粉刷一次。 第 i 个木匠要么不粉刷,要么粉刷包含木板 \(S_i\) 的,长度不超过 $ L_i $ 的连续的一段木板,每粉刷一块可以得到 $ P_i $ 的报酬。 不同工匠的 \(S_i\) 不同。 请问如何安排能使工匠们获得的总报酬最多。 输入格式 第一行包含两个整数N和M。 接下来M行,每行包含三个整数Li,Pi,Si。 输出格式 输出一个整数,表示结果。 数据范围 1≤N≤16000, 1≤M≤100, 1≤Pi≤10000 输入样例: 8 4 3 2 2 3 2 3 3 3 5 1 1 7 输出样例: 17 显然,这是一道单调队列优化的模板题。 首先,我们考虑这个单调队列。 什么是单调队列 ? 单调队列, 指的是一个保存当前状态的决策点集合的队列。 队列的队首即是当前的最优决策。但在状态转移的过程中,需要不断维护。时间复杂度为O(阶段数 * 状态数) 维护单调队列有两种方式。 检查队首的合法性 在队尾删除无用决策 提一嘴,这里的单调是k单调递增,calc(i,k)单调递减 首先, 这一题有三个原始状态状态: 第i个painter什么也不刷, 即f[i - 1,j] 第j块板子不刷,即f[i, j - 1] 第i个工匠粉刷 k + 1 到 j 块板子