Qt开发-绘图控件总结

相信许多朋友在使用Qt做界面开发时,会涉及到将数据以图表的方式进行呈现。在网上有许多绘图控件,但适合Qt开发下的并不多,经过这几年的血泪教训,经验总结,直接进行开发的绘图控件有如下几个:

1.Qt自带绘图控件QtChart

Qt是自带绘图控件的,在安装 Qt时记得勾选上QtChart的安装选项即可,那为何大部分做Qt开发的人员不会使用呢,这就要回到Qt开发的主要优势---跨平台开发,所以QT设计框架上不能只满足于一个平台,像Linux、Windows、macOS,以及国产操作系统,都是支持的,所以覆盖面广,开发人员可以将windows开发的项目移植到Linux上是非常便捷的,所以聊回正题,正是要适应太多平台,Qt在单独的功能应用上并不强,它只是一个框架,用过QTCP或QUDP一定被低效传输坑过(默认有传输间隔),那么QtChart也是同样的道理,在数据量1万以内还是能打的,但是现在做图表的,动不动就上万数据量,如果没有像素抽点,那么卡顿是不可避免的,,本人使用Qt5的版本,QtChart没什么优势,果断放弃了。

重点:QtChart做简单的图表还行,做复杂图表(金融图)很难实现。

2.Qt的老搭档QWT

Qwt是一款完全适应Qt5/6的图表控件,它的官网上是这么说:Qwt库包含GUI组件和实用程序类,主要用于有技术背景的程序。除了2D图的框架之外,它还提供了标尺、滑块、刻度盘、圆规、温度计、滚轮和旋钮来控制或显示double类型的值、数组或范围。

开源免费,非常友好,下载源码后编译生成qwt库,当时我使用的是qwt6.1.3,第一感觉界面好原始,并不美观,绘图效率上一般,大数据量依旧吃力,需要自己抽点显示。还有就是色谱图没法铺满,当界面缩放时,会明显看到渲染图层与背景分离,没法自动覆盖背景。

重点:qwt只是2维图表,支持图表样式非常多,开源友好【GNU宽松通用公共许可证(LGPL)】,但在开发设计上流程复杂,界面不够美观,大数据量使用不行,但比QtChart强(这个网上有许多同行都测试过)。

3.半路杀出的QCustomplot

一个用于绘图和数据可视化的Qt C++小部件

除开上面的两个二维图表控件,接下来要介绍的这位是非常独特的存在,为何呢?非常轻量级,就一个头文件和一个cpp文件,完美替代QtChart,成为Qt绘图的首选,代码开源,可定义头文件编译成库。

界面上美观,支持数据量一般,当绘图数据上百万,并且不抽点,也能显示出来,就是卡顿,非常占内存(QCustomplot的绘图参数都使用QMap进行管理)。在开发上非常方便,引入头文件,实例化QCustomplot对象就完成图表的创建,网上有需要对该控件的大数据量改进,最直接的是修改数据指针,本人亲测,效果不行,因为图表不仅仅是数据,还有图层(多图层显示)和渲染处理,这些都是要结合传入的数据进行设置。

重点:优质的二维图表控件,开源但协议是GNU GPLv3,懂的同行都懂,不懂记得查查,开发上简单高效,处理大数据量卡顿,但优于Qwt。

4.一款商用绘图控件ChartDirector

前三个都是免费,接下来讲的是收费的,想白嫖的同行可以跳过。当本人看到收费时,本想看看一个绘图控件都要收费,太没奉献精神了,必须看看有什么特点:

网上下载了库和测试代码,才发现这个图表控件非常全面,二维全覆盖,支持复杂数据量,而且支持甘特图,以上三个控件都没有,而且支持三维点图和三维色谱图,最强大的地方时多语言都兼容,C++/C#/Java/Python等等,见下图:

看了开发示例,发现这个绘图控件很独特,就是一个网页的效果,但会自动像素抽点,自动调整纵坐标。所以想修改图表的横纵坐标范围会有点难,常常要结合画布的像素点来关联数据点。由于不能开源,所以很多功能没法再优化。

重点:收费控件,开发难度比较大,不是常规的图表设计逻辑,直接使用指针数据即可,不用单独存成绘图数据,大数据量表现优秀,就是大数据量下缩放卡顿,框选流程,覆盖所有二维图和三维图。

5.网页绘图控件ECharts

一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。

这个绘图控件非常美观,支持Qt开发,具体操作可以看这位博主的文章:

Qt+ECharts开发笔记(一):ECharts介绍、下载和Qt调用ECharts基础柱状图Demo_qt 封装echarts-CSDN博客

使用过Echarts,唯一比较不便的就是传入数据,需要学习js,如果数据量特别大,组绘图数据就会非常麻烦,目前没有一个好的方案。做一个简单图表还是可以的,大数据量表现优于QCustomplot和qwt。

重点:开源图表,二维图表和三维图表非常全,一个js文件,一个网页文件就组成一个图表,只是在Qt开发是需要用到QWebEnginView,这个部件需要安装qt时要选上才有。绘图组数据比较麻烦,不是很方便。

本人经验有限,如有描述不当的地方,望大家指正!最后祝大家调试一把过,编译没错误,运行不崩溃,越来越强大!

  • 16
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt是一款跨平台的图形用户界面开发框架,提供了丰富的GUI控件和功能以及跨平台的能力。PyQt和PySide是在Qt基础上开发的Python绑定库,使得我们可以使用Python语言来编写Qt应用程序。 PyQt和PySide提供了和Qt类似的功能和API,使得我们可以方便地在Python中使用Qt的各种特性,如窗口管理、布局管理器、事件处理和信号槽机制等。它们支持Qt的所有模块,因此可以利用Qt的强大功能开发出高度可定制的应用程序。 Custom Widgets是指自定义的用户界面部件,可以根据需求自己进行开发或者对现有的控件进行定制。在PyQt和PySide中,我们可以使用Qt的功能来创建自定义的控件,通过继承已有的控件类来添加新的功能或者修改控件的外观和行为。这样可以满足特定需求并增加应用程序的交互性和美观性。 开发自定义的控件需要理解Qt的事件和绘图机制,掌握Qt提供的绘图功能和控件定制的技术。我们可以使用Qt绘图API来绘制自定义的界面元素,并且可以通过事件和信号槽来实现控件的交互性。在PyQt和PySide中,可以利用Python的特性和语法来更加方便地进行控件开发和定制。 总之,Qt、PyQt和PySide的结合可以帮助我们快速开发跨平台的应用程序,并且可以通过自定义控件来满足特定需求。这些工具和技术的使用可以大大提高应用程序的开发效率和灵活性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值