随笔分类 -  Qt/C++项目作品

摘要:一、前言 直方波形图控件非原创控件,控件大全中大概有20 30个控件非自己原创,而是参考了网上开源的代码,自己加以整理和完善,新增了插件的代码使得可以直接集成到QtDesigner或者QtCreator中。直方波形图,主要就是将外部传入的坐标集合数据进行渐变过渡的绘制,产生一个动态的过渡效果,将设置 阅读全文
posted @ 2019-09-22 09:47 飞扬青云 阅读(2926) 评论(0) 推荐(1) 编辑
摘要:一、前言 波浪曲线控件,其实是之前一个水波进度条控件的一个核心,其实就是利用正弦曲线来生成对应的坐标进行绘制,把这个功能单独提取出来,是为了更详细的研究各种正弦余弦等拓展效果,当时写这个效果的时候,参考的是网上android绘制的水波效果的代码,然后自己重新理解以后,整理成Qt的版本,拓展了部分效果 阅读全文
posted @ 2019-09-21 10:02 飞扬青云 阅读(2497) 评论(0) 推荐(1) 编辑
摘要:一、前言 前面几篇文章中的控件基本上难度系数接近0,甚至有凑控件数量的嫌疑,这次必须来一个强悍的控件,本控件难度系数在所有控件中排前五,代码量也不少,头文件都550行,实现文件1600行,为什么这么多呢,其实本控件是由好多个子控件组成的,字母高亮背景类、中间字母分隔类、右侧字母导航类、通讯录按钮类、 阅读全文
posted @ 2019-09-20 22:09 飞扬青云 阅读(1631) 评论(0) 推荐(0) 编辑
摘要:一、前言 这个控件没有太多的应用场景,主要就是练手,论美观的话比不上之前发过的一个图片时钟控件,所以此控件也是作为一个基础的绘制demo出现在Qt源码中,我们可以在Qt的安装目录下找到一个时钟控件的绘制,甚至还有qml版本,本控件无非就是一个仪表边框加上时钟分钟刻度再加上时分秒指针,打完收工,我是在 阅读全文
posted @ 2019-09-20 09:35 飞扬青云 阅读(2103) 评论(0) 推荐(0) 编辑
摘要:一、前言 默认的qcombobox控件,如果元素item中的内容过长超过控件本身的宽度的话,会自动切掉变成省略号显示,有些应用场景不希望是省略号显示,希望有多长就显示多长,还有一种应用场景是需要设置下拉元素的高度为指定的高度,比如很多触摸屏上,如果程序中的下拉框太小,手指很不好点,很容易误操作,为了 阅读全文
posted @ 2019-09-19 13:21 飞扬青云 阅读(2579) 评论(0) 推荐(0) 编辑
摘要:一、前言 用Qt开发已经九年了,期间用Qt做过不少的项目,在各种项目中有个功能很常用,尤其是涉及到数据记录存储的项目,那就是需要对查询的数据进行导出到Excel,或者导出到Pdf文件,或者直接打印查询的数据,其中导出数据到Excel最常见,基本上有三种方法。 方法一使用QAxObject,小数据量还 阅读全文
posted @ 2019-09-18 09:12 飞扬青云 阅读(12251) 评论(6) 推荐(1) 编辑
摘要:一、前言 这个控件写了很久了,元老级别的控件之一,开发之初主要是自己的好几个项目要用到,比如提供一个颜色下拉框设置对应的曲线或者时间颜色,视频监控项目中经常用到的OSD标签设置,这个控件的难度系数接近0,初学者都会,其实网上搜索也很多人提供了绘制的方法,就是枚举QColor::colorNames( 阅读全文
posted @ 2019-09-17 18:47 飞扬青云 阅读(1971) 评论(0) 推荐(0) 编辑
摘要:一、前言 这个控件是近期定制的控件,还是比较实用的控件之一,用户主要是提了三点需求,一点是切换焦点的时候控件放大突出显示,一点是可直接输入或者编辑值,还有一点是支持上下键及翻页键和鼠标滚轮来动态修改值,类似于qspinbox控件。要能够支持直接输入首先想到的就是qlineedit控件,在原有的仪表盘 阅读全文
posted @ 2019-09-16 13:15 飞扬青云 阅读(1570) 评论(0) 推荐(0) 编辑
摘要:一、前言 自从研究Qt编写自定义控件以来,一发不可收拾,越多越多人有类似的需求找我定制控件,陆陆续续写了上百个控件,目前已超过150个,于是逐渐衍生了另外一个需求,提供一个控件属性设计器,类似QtDesigner一样,可以方便的拖曳控件,改变属性,立即应用,并导出到文件方便下次直接加载,这个设计器有 阅读全文
posted @ 2019-09-13 10:52 飞扬青云 阅读(2746) 评论(0) 推荐(0) 编辑
摘要:一、前言 上一篇文章负责把设计好的控件数据导出到了xml文件,本偏文章负责把导出的xml数据文件导入,然后在画布上自动生成对应的控件,Qt内置的xml数据解析功能,非常强大,都封装在QtXml组件中,Qt有个好处就是,封装了众多的各大操作系统平台的功能,尤其是GUI控件,不愧是超大型一站式GUI超市 阅读全文
posted @ 2019-09-13 10:28 飞扬青云 阅读(1340) 评论(0) 推荐(0) 编辑
摘要:一、前言 能够导出控件布局和属性设置数据到xml文件或者其他文件,也是一个非常实用的功能,类似于QtDesigner中把页面设计好以后生成的.ui结尾的文件,其实就是xml文件,按照约定的规则存储好控件名称和属性名称及对应的属性值,然后打开的时候按照这个规则取出来就行了。每个控件还有固定的几个数据需 阅读全文
posted @ 2019-09-13 10:10 飞扬青云 阅读(1157) 评论(0) 推荐(0) 编辑
摘要:一、前言 数据库作为数据源,在很多组态软件中使用非常多,指定数据库类型,填写好数据库连接信息,指定对应的数据库表和字段,采集间隔,程序按照采集间隔自动采集数据库数据,绑定到界面上的控件赋值显示即可。使用数据库作为数据源,有个非常大的好处就是不用去写额外的通信代码,也与对方的什么语言什么平台无关,不会 阅读全文
posted @ 2019-09-12 09:22 飞扬青云 阅读(1069) 评论(0) 推荐(0) 编辑
摘要:一、前言 上一篇文章已经打通了数据源之一的串口采集,这次要说的是网络采集,网络通信目前用的最多的是三种,TCP/UDP/HTTP,其中tcp通信又包括了客户端服务端两种,tcp通信才用了多次握手机制不丢包,但是耗费资源多而且需要建立连接。udp通信在大数据量或者网络不稳定的情况下,可能丢包,而且顺序 阅读全文
posted @ 2019-09-12 09:12 飞扬青云 阅读(859) 评论(0) 推荐(0) 编辑
摘要:一、前言 数据源是组态软件的核心灵魂,少了数据源,组态就是个花架子没卵用,一般数据源有三种方式获取,串口、网络、数据库,至于数据规则是什么,这个用户自己指定,本设计器全部采用第一个字节作为数据来演示。 串口通信在大量的工业控制领域用的最多,就因为稳定两个字,长期霸占了几十年的通信规则,现在还有大量的 阅读全文
posted @ 2019-09-12 09:01 飞扬青云 阅读(1347) 评论(0) 推荐(0) 编辑
摘要:一、前言 之前就提过,Qt的属性机制强大到爆,这次的动态属性功能就是要让他爆,很难想象只要一行代码即可widget setProperty("value", value);没错就这么简单,调用弱属性机制,可以直接控制控件中的所有属性,设计这个机制的人绝对是天才,直接跪了。至于具体底层是怎么实现的,这 阅读全文
posted @ 2019-09-11 15:49 飞扬青云 阅读(2047) 评论(0) 推荐(0) 编辑
摘要:一、前言 在上一篇文章中就提到过,使用qtpropertybrowser来加载属性,对应加载到的属性是英文的,也就是控件类中Q_PROPERTY描述的变量名称,如何变成中文或者其他语言显示呢?这个就需要研究qtpropertybrowser的源码了,通过研究发现,在QtObjectControlle 阅读全文
posted @ 2019-09-11 15:36 飞扬青云 阅读(1173) 评论(0) 推荐(0) 编辑
摘要:一、前言 控件能加载拖曳拉伸了,这些都是基本的前提工作,接下来的重点就是要动态加载选中控件的属性了,Qt的属性机制那是异常的强大,只能用强大到爆来形容,Qt中编写自定义控件,如果属性都用Q_PROPERTY来描述过,那都支持整个Qt生态环境中的各种应用场景的加载,比如widget的属性设计,qml中 阅读全文
posted @ 2019-09-11 10:03 飞扬青云 阅读(1359) 评论(0) 推荐(0) 编辑
摘要:一、前言 插件控件加载了,拖曳控件也实现了,接下来就是一个最难点了,跟QtDesigner或者其他开发环境一样,能够任意自由的拉伸控件大小,移动位置,为了这个功能,还特别编写了一个控件来实现这个功能,名字叫SelectWidget描点跟随窗体控件,大致的原理就是安装事件过滤器,在生成控件的时候将该控 阅读全文
posted @ 2019-09-10 16:38 飞扬青云 阅读(1754) 评论(0) 推荐(0) 编辑
摘要:一、前言 上一篇文章把插件加载好了,并且把插件中的所有控件都显示到了列表框中,这次要做的就是实现拖曳控件的功能,用户选择一个控件拖曳到画布上,松开,在松开位置处自动实例化该控件,这个需要用到dropEvent和dragEnterEvent事件,重新实现这两个事件,对拖曳的对象进行过滤并调用函数实例化 阅读全文
posted @ 2019-09-10 10:17 飞扬青云 阅读(1695) 评论(0) 推荐(1) 编辑
摘要:一、前言 加载插件是整个属性设计器的第一步要打通的功能,插件中的控件都加载不了,后面就别搞别玩下去了没法玩的,要从一个动态库中加载出来控件,肯定需要用到反射机制,以前做.NET开发的时候就觉得反射这个东西相当强大,居然可以读取DLL加载出来控件,现在用Qt,发现Qt也有反射机制,也许这东东可能各大开 阅读全文
posted @ 2019-09-09 09:50 飞扬青云 阅读(2006) 评论(0) 推荐(0) 编辑