精华内容
下载资源
问答
  • QT可视化大屏看板,已经编译成功,可以直接运行
  • qt数据可视化,大屏幕,科幻效果 大数据可视化-科幻效果-图片素材(psd文件 3.6G)见https://download.csdn.net/download/zp349295931/12562144
  • Echart是百度研发团队开发的一款报表视图JS插件,功能十分强大,可在Echart官网下载源码(一个echarts.min.js文件)进行使用。 1.1、下载说明 在官网中选择在线定制,然后勾选自己需要的模块,下载 二、使用说明...

    一、Echart下载

    Echart是百度研发团队开发的一款报表视图JS插件,功能十分强大,可在Echart官网下载源码(一个echarts.min.js文件)进行使用。
    在这里插入图片描述

    1.1、下载说明

    在官网中选择在线定制,然后勾选自己需要的模块,下载
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    二、使用说明

    1、创建一个.html文件,将其和echart.min.js放在Source文件夹(此文件夹是自己创建的,路径为Qt工程的构建文件下的debug文件夹,即可执行文件路径)中,例如:
    在这里插入图片描述
    在这里插入图片描述
    2、调用

    ui->widget->load(QUrl("file:///" + qApp->applicationDirPath() + "/Source/Test.html"));
    

    不懂Qt嵌入网页的可以去看我之前的博客:Qt–网页嵌入

    3、运行效果
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 一款数据可视化的工具 live deom: 推荐使用Chrome浏览 todo 拖拽生成 大小位置工具框 饼状图 线状图 (待完善) 柱状图 散点图 (待完善) 地图 D3图标 预览 发布 响应式工具 (补测试) 数据库查询数据 ...
  • 多维数据可视化工具(有源码

    热门讨论 2012-03-06 10:08:33
    这是一个用QT开发的程序,里面有源代码,你能用它进行最高6维数据可视化展示,你会体会到时它比MATLAB还强大的多维绘图功能
  • Qt编写数据可视化大屏界面电子看板3-新建布局-附件资源
  • Qt+Pcl可视化点云.rar

    2020-02-12 18:04:31
    本程序设计了Qt界面,用来可视化xyz格式的点云,界面上可通过滑块调节颜色以及大小。文件夹含程序、点云文件、使用方法。开发环境为vs2015+pcl1.8.1+Qt5.11.2
  • 尽善尽美之作《Python Qt GUI与数据可视化编程》

    万次阅读 多人点赞 2019-08-16 17:42:08
    我写的第二本书《Python Qt GUI与数据可视化编程》终于上架销售了。 去年为第一本书《Qt 5.9 C++开发指南》写的介绍文章称其为倾心倾力之作。本书与第一本书是有些关联的,一些内容框架和示例来自于第一本书,...

    我写的第二本书《Python Qt GUI与数据可视化编程》终于上架销售了。

    去年为第一本书《Qt 5.9 C++开发指南》写的介绍文章称其为倾心倾力之作。本书与第一本书是有些关联的,一些内容框架和示例来自于第一本书,但是本书不是简单地将C++的示例改写为Python的示例,在写这本书时发现第一本书中的一些不足,做了很多的改进。我们在写论文或指导学生写论文时都知道一个基本的道理:好的论文总是一遍一遍改出来的。这是我写的第二本书,有了更多的写书经验,在内容和结构上更加完善,力求完美,所以称其为尽善尽美之作。

    怎样才能算得上是尽善尽美之作呢?本人在大学里从事教学工作,看多了学生的报告和毕业论文,翻一遍基本上就能看出来哪篇是好的论文,哪篇是差的论文。好的论文结构清晰,内容充实而条理清楚,该具体的地方能详细介绍,该粗略的地方绝不多占篇幅,格式美观,图文并茂,让人看了就能看明白,看着就舒服。而差的论文则相反,论文结构不清,逻辑混乱,缺少真材实料,内容注水严重,格式也差。

    本书就是按照我心目中好论文的标准来写的,在章节内容选取、内容顺序安排、示例设计、原理和程序讲解各方面力求完美。总结一下,本书有以下几个特点。

    1. 主题明确,内容选择紧扣主题

    本书的主题是使用PyQt5进行GUI应用程序设计,以及嵌入到GUI界面的数据可视化编程。这个主题是非常实用的,因为我们经常需要将自己编写的Python程序封装成一个GUI程序,以便进行展示和交互式的操作。而Python自带的tkinter虽然可以做GUI界面,但是功能比较差,Matplotlib是常用的数据可视化工具,但是一般介绍Matplotlib的书只介绍其脚本化的编程方法,将其当做类似于MATLAB中的plot绘图工具在使用。

    PyQt5是Qt5 C++类库的Python绑定,使用PyQt5可以在Python中开发专业级的GUI程序。我们已经出版了一本《Qt 5.9 C++开发指南》,对Qt C++类库的使用比较熟悉,所以写这个主题也是合适的。本书围绕这个主题设置章节内容,首先在内容选择上追求完美。

    (1)本书没有用一章专门介绍Python编程基础。研究GUI和数据可视化编程的读者应该已有一定的Python编程基础,所以本书没有必要再介绍Python编程基础。

    (2)有些功能模块是PyQt5和Python都有的,就只选择在Python中设计GUI应用程序用得上的PyQt5模块。例如,Python虽然有自带的数据库、多媒体、文件读写功能模块,但是功能不如PyQt5的相应模块,或不易与PyQt5的GUI程序的窗口界面结合使用,本书就介绍PyQt5的数据库、多媒体、文件读写功能模块。而Python自带的多线程编程功能已经比较全,且不涉及用户界面,本书就不介绍PyQt5的多线程编程功能。Python有很多功能强大的第三方网络功能模块,也就没有必要介绍PyQt5的网络编程功能了。

    (3)在数据可视化部分,本书介绍了PyQtChart和PyQtDataVisualization的使用,这两个包实际上是Qt C++类库的一部分,熟悉Qt C++类库的读者可以很快上手使用。同时又考虑到Matplotlib使用的广泛性,增加了Matplotlib嵌入到GUI界面上实现数据可视化编程的内容。

    2. 章节内容安排逻辑清晰

    本书的内容分为三大部分,各部分和章节分布如图。

    第一部分是PyQt5开发基础,包括第1章和第2章。

    第1章介绍Python、Qt、PyQt5的特点和安装方法,在Windows 中建立开发环境。

    第2章介绍使用PyQt5开发GUI应用程序的基本框架原理,包括GUI应用程序的基本结构,可视化设计UI窗体时开发GUI程序的流程和框架,信号与槽的使用方法,资源文件的使用等。掌握了第2章的内容就掌握了PyQt5开发GUI应用程序的框架性原理,再根据自己的编程需要选择性地学习第二和第三部分的章节。

    第二部分是GUI应用程序设计,从第3章至第11章。

    这一部分介绍GUI应用程序设计中常用到的一些功能模块的编程使用方法,包括常用界面组件的使用,Model/View结构,事件处理,对话框和多窗口设计,数据库,绘图,文件读写和操作,多媒体,多语言界面和Qt样式表定制界面等。

    第三部分介绍数据可视化设计方法,从第12章至第14章。

    PyQtChart和PyQtDataVisualization是Qt C++类库相应模块的Python绑定,分别用于二维图表和三维数据可视化设计,其内容的介绍比较全面。另外由于Matplotlib在Python数据可视化中应用广泛,第14章专门介绍将Matplotlib嵌入到GUI界面中实现交互式数据可视化的设计方法,包括主要的技术点和一些常用二维图和三维图的编程使用方法。

    PyQtChart、PyQtDataVisualization与Matplotlib的某些功能是重合的,但两者各有千秋,读者可根据自己的需要和熟悉的内容选择学习和使用。如果读者熟悉Qt C++类库中的二维图表和三维数据可视化模块的使用,就看第12章和第13章;如果读者熟悉Matplotlib的使用,就看第14章。

    3. 内容讲解言简意赅,详略得当

    技术书籍必须言简意赅,避免废话连篇,同时要结合程序或图表进行必要的讲解。在内容的讲解上要详略得当,该简略的就简略,该深入的就深入,例如:

    (1)本书在第2章介绍过窗体UI的可视化设计原理、代码构建界面的原理后,在后续章节中就基本不再介绍窗体的可视化设计过程,更不会拿构建界面的代码来充页数。界面设计尽量采用可视化方法,GUI程序设计的重点应该放在类的各种接口属性和函数的使用上,放在业务逻辑功能的实现上。

    (2)对于简单的界面组件的使用,本书不会花太多篇幅来逐一介绍,因为有些组件的常用功能很简单,甚至是显而易见的,例如QLabel,QPushButton等。本书第3章介绍界面组件的使用时,通常是将几个组件放在一个示例里一起介绍,除了简单介绍其常用方法外,还介绍一些高级方法的使用,例如QTreeWidget的节点关联数据的使用方法。

    (3)对于某些内容本书又会深入地详细介绍。例如第14章介绍Matplotlib嵌入到GUI界面中的编程方法,本书就介绍的非常详细,而不是像某本书上只是拿一个官方示例跑一下而已。第14章介绍了Matplotlib嵌入到GUI界面中编程的基本原理,还详细介绍了Matplotlib绘图的主要元素的面向对象操作方法、交互式操作方法,还设计了一个自定义绘图组件类QmyFigureCanvas,可直接在界面可视化设计时使用,可直接应用于用户自己的程序设计。

    图14-4 示例Demo14_2运行时界面。将Matplotlib的绘图功能嵌入到GUI程序中,并且对图的各个组成元素的面向对象编程操作进行了详细的介绍

    4. 以完整示例讲解编程方法,提供两套示例程序

    本书延续《Qt 5.9 C++开发指南》一书的风格,以大量完整示例程序为基础讲解编程原理,这些示例分散在各个章节中。本人一贯认为,没有完整示例的编程书籍就是忽悠人的。只有自己做过一遍示例程序,才可以深入地理解和掌握编程中的一些细节问题,讲解也就更加有针对性。学习编程也是一样,只是拿示例程序跑一遍、看一遍是难以完全掌握的,必须自己动手做一遍才能真正学会。

    本书提供两套示例程序。一套是具有全部源码的程序,包括Qt项目、UI窗体、Python程序等,其中的Python程序可以直接运行,显示示例运行结果。

    另外一套是只有UI窗体的不完整程序,包括Qt项目、UI窗体、Python程序框架,其中的Python程序文件只有基本框架,没有功能实现代码。这套程序是为了便于读者使用已经设计好的UI窗体,根据书中介绍的过程和内容,在Python程序框架里自己编写程序,逐步实现功能。这样的学习过程就具有可操作性。

    以下是本书中一些示例的运行界面。

    图3-10 示例Demo3_7运行时界面。使用QAction设计主窗口的菜单栏、工具栏,可视化与代码结合的界面设计方法,QPlainTextEditor文字编辑功能等

     

    图13-11 示例Demo13_3绘制的三维曲面图。使用PyQtDataVisualization中的类绘制三维曲面图

     

    图14-9  示例Demo14_3运行时界面。Matplotlib绘图工具栏的改造与交互式操作

    后记

    我们写这本书只是因为发现市面上没有这个主题的好书,觉得有必要写一本。写这本书没有什么项目支持,没有deadline要求,因而能精耕细作,仔细打磨,希望写出一本比较完美的书。现在书已正式出版,算不算得上一本好书,就留给读者和市场,还有时间来检验了。

    附:三位作者简介

    • 王维波(博主),博士,中国石油大学(华东)教师,从事测控技术与仪器专业相关的教学工作,主要研究地球物理探测仪器开发、监测数据处理方法和软件开发。精通软硬件开发,已出版《Qt 5.9 C++开发指南》一书。
    • 栗宝鹃,博士,某大型单位科研人员,主要从事地球物理、水下探测、遥感等专业方向的数据处理和图像识别方面的研究工作,在日常工作中使用Qt和Python解决实际问题。
    • 张晓东,博士,中国石油大学(华东)教师,从事自动化专业相关的教学工作,研究方向主要是优化算法、最优控制和智能控制。具有丰富的算法编程经验,善于通过Qt C++和Python结合提高算法效率。
    展开全文
  • 说到自定义控件,我是感觉特别熟悉的几个字,本人亲自原创的自定义控件超过110个,都是来自各个行业的具体应用真实需求,而不是凭空捏造的,当然有几个小控件也有点凑数的嫌疑,在编写整个数据可视化大屏界面电子...

    一、前言

    说到自定义控件,我是感觉特别熟悉的几个字,本人亲自原创的自定义控件超过110个,都是来自各个行业的具体应用真实需求,而不是凭空捏造的,当然有几个小控件也有点凑数的嫌疑,在编写整个数据可视化大屏界面电子看板系统中,也用到了四五个自定义的控件,比如那个环形百分比图,多态进度条,合格率仪表盘,速度仪表盘等,这些控件在现有的类中是没有的,需要用QPainter这个牛逼的工具来绘制,类似于神笔马良似的,给我一个画笔,可以画出任意你想要的图形,好比我常说的心中有坐标,万物皆painter。

    自定义控件为了适应整体换肤,需要用Q_PROPERTY类指定,类似于元对象,用Q_PROPERTY指定的东西,可以直接样式表控制,比如GaugePercent{qproperty-baseColor:#FF0000;}就可以对所有的GaugePercent类进行颜色更换,而且是动态更换,用Q_PROPERTY指定的东西还可以直接出现在Qtcreator的右侧属性栏,直接修改属性即可,所见即所得,非常方便。

    二、电子看板介绍

    电子看板是目视化管理的一种表现形式,即对数据的状况一目了然地表现,主要是对于管理项目,它通过利用形象直观而又色彩适宜的各种视觉感知信息来组织现场生产活动,目视管理依据人类的生理特征,在生产现场充分利用信号灯、标识牌、符号颜色等方式来发出视觉信号,鲜明准确地刺激人的神经末梢,快速地传递信息,形象直观地将潜在的问题和浪费现象都显现出来。以便任何人都可以及时掌握管理现状和必要的情报,从而能够快速制定并实施应对措施。因此,管理看板是发现问题、解决问题的非常有效且直观的手段,是优秀的现场管理必不可少的工具之一。

    三、功能特点

    1. 采用分层设计,整体总共分三级界面,一级界面是整体布局,二级界面是单个功能模块,三级界面是单个控件。
    2. 子控件包括饼图、圆环图、曲线图、柱状图、柱状分组图、横向柱状图、横向柱状分组图、合格率控件、百分比控件、进度控件、设备状态面板、表格数据、地图控件、视频控件等。
    3. 二级界面可以自由拖动悬浮,支持最小化隐藏、最大化关闭、响应双击自定义标题栏。
    4. 数据源支持模拟数据(默认)、数据库采集、串口通信(需定制)、网络通信(需定制)、网络请求等,可自由设定每个子界面的采集间隔即数据刷新频率。
    5. 采用纯QWidget编写,亲测Qt4.6到Qt6.2任意版本,理论上支持后续其他Qt版本。
    6. 超强跨平台,亲测windows、linux、mac、国产uos、国产银河麒麟kylin等系统,效果完美,同时还支持嵌入式linux比如树莓派、香橙派、全志、imx6等。
    7. 同时集成了自定义控件、qchart饼图、echart地图等功能。
    8. 内置多套配色风格样式(紫色、蓝色、深蓝、黑色),默认紫色,自适应任意分辨率。
    9. 可设置系统标题、目标分辨率、布局方案,启动立即应用。
    10. 可设置主背景颜色、面板颜色、十字线游标颜色等各种颜色。
    11. 可设置多条曲线不同颜色,没有设置颜色的情况下内置多套精美颜色随机应用。
    12. 可设置标题栏背景颜色、文字颜色。
    13. 可设置曲线图表背景颜色、文字颜色、网格颜色。
    14. 可设置正常颜色、警戒颜色、报警颜色、禁用颜色、百分比进度颜色。
    15. 可分别设置各种字体大小,比如全局字体、软件名称、标题栏、子标题栏、加粗标签等。
    16. 可设置标题栏高度、表头高度、行高度。
    17. 曲线支持游标、定位线、悬停高亮数据点、悬停显示值。
    18. 柱状图支持顶部(可设置顶端、上部、中间、底部)显示数据,全部自适应计算位置。
    19. 支持平滑曲线,内置多种平滑曲线算法,还支持面积图平滑。
    20. 面积图填充颜色可选多种规则比如单色透明度填充、透明度渐变填充等。
    21. 数据库支持sqlite、mysql、postgresql、oracle、国产人大金仓等数据库。
    22. 主界面直接鼠标右键切换布局、配色方案、关闭开启某个二级窗体。
    23. 自动记忆所有子窗口的大小和位置,下次启动立即应用。
    24. 动态加载布局方案菜单,可以动态新建布局、恢复布局、保存布局、另存布局等,用户可以制造任意布局。
    25. 二级窗体,双击从主窗体分离出来浮动,可以自由调整大小。再次双击标题栏最大化,再次双击还原。
    26. 子模块也可以全屏显示作为一个大屏,这样就可以一个大屏拓展出多个子大屏,放大查看子模块的数据详情,适用多屏展示。
    27. 每个模块都可以自定义采集速度,如果是数据库采集会自动排队处理,后期还可以拓展每个子模块都独立的数据库采集。
    28. 提供系统设置模块进行整体的配置参数设置,效果立即应用。
    29. 提供精美炫酷的大屏地图模块,包括静态图片、闪烁效果、迁徙效果、世界地图、区域地图等,可指定点的经纬度坐标,识别单击响应,可以做地图跳转等,每个点都可以不同的颜色和提示信息。
    30. 除了提供大屏系统外,还将每个模块都做了独立的模块示例界面,每个模块都可以独立学习使用,里面用到的控件也单独做了控件示例界面,方便学习每个控件如何使用。
    31. 非常详细的开发和使用手册,其中包括数据库说明、模块对照图、控件对照图、项目结构、代码说明(精确到每个类)、演示demo、使用方法等。

    四、配置文件说明

    (1)、基本配置参数

    字段描述默认值
    WorkMode工作模式 timer-模拟数据 db-数据库采集 tcp-网络采集 http-post请求db
    MapStyle中间地图样式 image-静态图片 point-闪烁点 move-迁徙图point
    Title软件标题,显示在软件中间顶部数字化工厂信息中心
    Ratio分辨率,目前无意义4096*216
    Layout布局方案,每次切换布局方案以后都会保存完整布局
    Theme配色方案,每次切换配色方案以后都会保存紫色风格
    VideoAddr视频流地址,视频模块播放的视频地址凤凰卫视
    AutoRun是否开机启动false
    MoveEnable模块是否可以拖动,启用以后模块可以任意拖动true
    CutLeftBottom底部布局左侧是否切掉true
    CutRightBottom底部布局右侧是否切掉true
    StaticLine是否绘制静态定位线,为假则绘制游标十字线true
    ShowPercentY轴是否显示百分比true
    StepYY轴大尺度步长6
    CursorHideTime用户不操作鼠标自动隐藏鼠标的时间间隔,单位秒5

    (2)、颜色配置参数

    字段描述默认值
    ColorMainBg主背景颜色QColor(4, 7, 38)
    ColorPanelBg面板背景颜色QColor(26, 29, 60)
    ColorLine十字线定位线颜色QColor(255, 0, 0)
    ColorLine1线条1颜色QColor(0, 176, 180)
    ColorLine2线条2颜色QColor(32, 159, 223)
    ColorLine3线条3颜色QColor(255, 192, 0)
    ColorTitleBg标题栏背景颜色QColor(48, 48, 85)
    ColorTitleText标题栏文字颜色QColor(255, 255, 255)
    ColorChartBg曲线图表背景颜色QColor(38, 41, 74)
    ColorChartText曲线图表文字颜色QColor(250, 250, 250)
    ColorChartGrid曲线图表网格颜色QColor(180, 180, 180)
    ColorOk正常颜色QColor(0, 176, 180)
    ColorLow警戒颜色QColor(255, 192, 0)
    ColorAlarm报警颜色QColor(214, 77, 84)
    ColorDisable禁用背景颜色QColor(210, 210, 210)
    ColorPercent环形百分比背景颜色QColor(0, 254, 254)

    (3)、字体和尺寸配置参数

    字段描述默认值
    MainFont全局字号微软雅黑,12
    NameFont软件名称字号19
    LabFont加粗标签字号12
    DeviceFont设备面板字号12
    SubTitleFont模块子标题栏字号13
    TitleFont模块标题栏字号15
    TitleHeight模块标题栏高度23
    HeadHeight表格表头高度28
    RowHeight表格行高度25

    (4)、采集速度配置参数

    字段描述默认值
    IntervalModule1模块1采集间隔5000
    IntervalModule2模块2采集间隔5000
    IntervalModule3模块3采集间隔5000
    IntervalModule4模块4采集间隔5000
    IntervalModule5模块5采集间隔5000
    IntervalModule6模块6采集间隔5000
    IntervalModule7模块7采集间隔5000
    IntervalModule8模块8采集间隔5000

    (5)、本地数据库配置参数

    字段描述默认值
    LocalDBType本地数据库类型,Sqlite、Mysql等Mysql
    LocalDBIP本地数据库主机地址127.0.0.1
    LocalDBPort本地数据库端口3306
    LocalDBName本地数据库名称bigscreen
    LocalUserName本地数据库用户名root
    LocalUserPwd本地数据库密码root

    五、特别说明

    1. 可执行文件同级文件夹有layout+layout_1440+layout_1920,程序默认自动识别分辨率并加载对应的布局文件夹,比如1920分辨率则从layout_1920文件夹加载布局,并作为整体布局文件夹。
    2. 程序默认是模拟数据,如果需要从数据库采集则修改配置文件WorkMode=db即可。
    3. 如果发现布局拖动乱了,可以直接鼠标右键选择恢复布局即可,在保存布局以前。
    4. 在中间地图模块鼠标右键可以弹出菜单,切换布局和配色方案等。
    5. 在模块的标题栏上右键可以弹出默认的dock菜单,用来显示和隐藏各模块。
    6. 软件关闭过程中会自动保存布局,下次启动以后自动应用。
    7. 如果使用的默认的默认的配色方案比如紫色风格,则配置文件中的颜色全部无效,会自动应用代码中的颜色,如果需要启用自定义的颜色,则将配置文件的 Theme=\x81ea\x5b9a\x4e49\x98ce\x683c 即可。此时打开软件会应用配置文件中的颜色。
    8. 右键菜单可以截图保存,默认命名为 配色方案名称_布局方案名称.png 保存在snap目录下。
    9. 如果是XP系统请先执行fixff.cmd,用来修复ffmpeg在XP上不可用的BUG。
    10. 在二级窗体的标题栏上右键弹出模块菜单,可以对单个模块打开关闭,其他地方右键全局菜单。
    11. 可执行文件下载地址:https://pan.baidu.com/s/1o97IGvZgTgDhlkuXQa4B0w 提取码:r2bv。
    12. 会不定期更新程序,欢迎各位提出批评和建议。

    六、效果图

    在这里插入图片描述

    七、核心代码

    void ProgressRing::paintEvent(QPaintEvent *)
    {
        int width = this->width();
        int height = this->height();
        int side = qMin(width, height);
    
        //绘制准备工作,启用反锯齿,平移坐标轴中心,等比例缩放
        QPainter painter(this);
        painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
        painter.translate(width / 2, height / 2);
        painter.scale(side / 200.0, side / 200.0);
    
        //绘制背景
        drawBg(&painter);
        //绘制进度
        drawRing(&painter);
    
        //绘制间隔,重新绘制一个圆遮住,产生间距效果
        if (ringPadding > 0) {
            drawPadding(&painter);
        }
    
        //绘制中间圆
        drawCircle(&painter);
        //绘制当前值
        drawValue(&painter);
    }
    
    void ProgressRing::drawBg(QPainter *painter)
    {
        int radius = 99;
        painter->save();
        painter->setPen(Qt::NoPen);
        //这里有个技巧,如果没有间距则设置成圆环的背景色
        painter->setBrush(ringPadding == 0 ? ringBgColor : bgColor);
        painter->drawEllipse(-radius, -radius, radius * 2, radius * 2);
        painter->restore();
    }
    
    void ProgressRing::drawRing(QPainter *painter)
    {
        int radius = 99 - ringPadding;
        painter->save();
        painter->setPen(Qt::NoPen);
        painter->setBrush(ringColor);
    
        QRectF rect(-radius, -radius, radius * 2, radius * 2);
    
        //计算总范围角度,当前值范围角度,剩余值范围角度
        double angleAll = 360.0;
        double angleCurrent = angleAll * ((currentValue - minValue) / (maxValue - minValue));
        double angleOther = angleAll - angleCurrent;
    
        //如果逆时针
        if (!clockWise) {
            angleCurrent = -angleCurrent;
            angleOther = -angleOther;
        }
    
        //动态设置当前进度颜色
        QColor color = ringColor;
        if (alarmMode == 1) {
            if (currentValue >= ringValue3) {
                color = ringColor3;
            } else if (currentValue >= ringValue2) {
                color = ringColor2;
            } else {
                color = ringColor1;
            }
        } else if (alarmMode == 2) {
            if (currentValue <= ringValue1) {
                color = ringColor1;
            } else if (currentValue <= ringValue2) {
                color = ringColor2;
            } else {
                color = ringColor3;
            }
        }
    
        //绘制当前值饼圆
        painter->setBrush(color);
        painter->drawPie(rect, (startAngle - angleCurrent) * 16, angleCurrent * 16);
    
        //绘制剩余值饼圆
        painter->setBrush(ringBgColor);
        painter->drawPie(rect, (startAngle - angleCurrent - angleOther) * 16, angleOther * 16);
    
        painter->restore();
    }
    
    void ProgressRing::drawPadding(QPainter *painter)
    {
        int radius = 99 - ringWidth - ringPadding;
        painter->save();
        painter->setPen(Qt::NoPen);
        painter->setBrush(bgColor);
        painter->drawEllipse(-radius, -radius, radius * 2, radius * 2);
        painter->restore();
    }
    
    void ProgressRing::drawCircle(QPainter *painter)
    {
        //文字的区域要减去进度的宽度及间距
        int radius = 99 - ringWidth - (ringPadding * 2);
        painter->save();
        painter->setPen(Qt::NoPen);
        painter->setBrush(circleColor);
        painter->drawEllipse(-radius, -radius, radius * 2, radius * 2);
        painter->restore();
    }
    
    void ProgressRing::drawValue(QPainter *painter)
    {
        //文字的区域要减去进度的宽度及间距
        int radius = 99 - ringWidth - (ringPadding * 2);
        painter->save();
        painter->setPen(textColor);
    
        QFont font;
        int fontSize = radius - (showPercent ? 20 : 6);
        font.setPixelSize(fontSize);
        painter->setFont(font);
    
        QRectF textRect(-radius, -radius, radius * 2, radius * 2);
        QString strValue;
        if (showPercent) {
            double percent = (currentValue * 100) / (maxValue - minValue);
            strValue = QString("%1%").arg(percent, 0, 'f', precision);
        } else {
            strValue = QString("%1").arg(currentValue, 0, 'f', precision);
        }
    
        //如果定义了显示的文字则优先显示
        strValue = text.isEmpty() ? strValue : text;
        painter->drawText(textRect, Qt::AlignCenter, strValue);
    
        painter->restore();
    }
    
    展开全文
  • Qt Charts 在Qt4时代就有了,不过一直以来是商业许可的。QCharts可以在社区版使用后,Qt画图再也不用需要配置第三方的qcustomplot和qwt插件了,QCharts功能比两者都好,且易用安装和使用。从5.7.0开始,Qt Charts 也...

    点击上方蓝字可直接关注!方便下次阅读。如果对你有帮助,可以点个在看,让它可以帮助到更多的同志~

    Qt Charts 在Qt4时代就有了,不过一直以来是商业许可的。QCharts可以在社区版使用后,Qt画图再也不用需要配置第三方的qcustomplot和qwt插件了,QCharts功能比两者都好,且易用安装和使用。从5.7.0开始,Qt Charts 也纳入了开放许可证。

     

    安装时记得勾选QCharts模块。下方是3D可视化模块,下次有机会再分享。

     

    Demo平台:Win10、 Qt 5.12.1、 MinGW 7.3.0 64-bit

    1  pro中添加charts模块

    QT       += charts

     

    2. 头文件与命名空间设置

        #include <QtCharts>

     

        using namespace QtCharts;

        //QT_CHARTS_USE_NAMESPACE

        也可以通过宏定义进行设置

     

    3. 程序源码

     

    程序就是Qt文档的源码,文档中是在MainWindow中显示的,我是在Widget中加了一个布局显示的。

    girdLayoutChart = new QGridLayout(this);
    
    
        QBarSet *set0 = new QBarSet("Jane");
        QBarSet *set1 = new QBarSet("John");
        QBarSet *set2 = new QBarSet("Axel");
        QBarSet *set3 = new QBarSet("Mary");
        QBarSet *set4 = new QBarSet("Samantha");
    
    
        *set0 << 1 << 2 << 3 << 4 << 5 << 6;
        *set1 << 5 << 0 << 0 << 4 << 0 << 7;
        *set2 << 3 << 5 << 8 << 13 << 8 << 5;
        *set3 << 5 << 6 << 7 << 3 << 4 << 5;
        *set4 << 9 << 7 << 5 << 3 << 1 << 2;
    
    
        QBarSeries *series = new QBarSeries();
        series->append(set0);
        series->append(set1);
        series->append(set2);
        series->append(set3);
        series->append(set4);
    
    
        QChart *chart = new QChart();
        chart->addSeries(series);   //加入柱状图
        chart->setTitle("Simple barchart example");
        chart->setAnimationOptions(QChart::SeriesAnimations);
    
    
        QStringList categories;
        categories << "Jan" << "Feb" << "Mar" << "Apr" << "May" << "Jun";
        QBarCategoryAxis *axisX = new QBarCategoryAxis();
        axisX->append(categories);
        chart->addAxis(axisX, Qt::AlignBottom);
        series->attachAxis(axisX);
    
    
        QValueAxis * axisY = new QValueAxis();
        axisY->setRange(0,15);
        chart->addAxis(axisY,Qt::AlignLeft);
        series->attachAxis(axisY);
    
    
        chart->legend()->setVisible(true);
        chart->legend()->setAlignment(Qt::AlignBottom);
    
    
        QChartView *chartView = new QChartView(chart);
        chartView->setRenderHint(QPainter::Antialiasing);
    
    
    //布局中加入窗体
        girdLayoutChart->addWidget(chartView);
    

    运行效果:

    4. 更多示例

    https://doc.qt.io/qt-5/qtcharts-examples.html

    5. 小结

    Qt 2D数据可视化方面多提供一种思路。

    欢迎关注公众号:

    展开全文
  • Qt for C ++编写的彩票数据可视化工具。 描述 Lotrio-Qt是用Qt为C ++编写的开源可视化工具,旨在轻松创建和图形化表示彩票数据。 版权 版权所有:copyright:2021 。 执照 该应用程序在下发布。 学分 在制作的应用...
  • PythonQtGui与数据可视化编程(彩图和配套源码)
  • QuickQanava提供QML组件和C ++类,以可视化C ++ / QML应用程序中的中型有向图。 QuickQanava致力于在具有DnD支持,可调整大小的内容和可视化拓扑创建的动态用户界面中显示关系内容。 将来的版本中可能会集成更高级...
  • QtDataStruct:Qt可视化数据结构
  • 用于以Qt for Python编写的彩票数据可视化工具。 描述 Lotrio-QtPy是用Qt为Python编写的开源可视化工具,旨在轻松创建和图形化表示彩票数据。 版权 版权所有:copyright:2021 。 执照 该应用程序在下发布。 学分 ...
  • 为了编写数据可视化大屏界面电子看板系统,为了能够兼容Qt4和嵌入式linux系统,尤其是那种主频很低的,但是老板又需要在这种硬件上(比如树莓派、香橙派、全志H3、imx6)展示这么华丽的界面时,就必须用最传统的...
  • 经过一年多写作和出版社的编辑加工,我的第二本书《Python Qt GUI与数据可视化编程》马上就正式上架了,敬请关注。 本书介绍在Python中使用PyQt5和其他模块进行GUI和数据可视化编程的方法,全书目录如下: 第...
  • 轨道模式以可视化迭代 将当前光标位置显示为复数 设置分形大小和缩小比例(移动时平滑渲染) 更改牛顿迭代的最大次数 改变牛顿法的阻尼系数 单线程或多线程( cpu )或OpenGL( gpu ) 导出/导入配置 将分形导出为...
  • #Fealines 这个名字来自额叶脑电图不对称(fea)。 此应用程序的用途之一是绘制 FEA。 #安装 下载 dist/main.zip,解压它,你应该有一个可以在 OSX 上运行的应用程序。 #Developing 目前只在 OSX 上测试过。...
  • PyQtGraph: 一款面向科研/开发工程的快捷数据可视化和GUI工具 PyQtGraph 用于 PyQt/PySide/PyQt5/PySide2 的纯 Python 图形库 版权所有 2020 Luke Campagnola,北卡罗来纳大学教堂山分校 ...
  • QGeoView是一个Qt / C ++小部件,用于可视化地理数据,例如平铺的图层,栅格或矢量数据。 QGeoView仅将Qt作为依赖项。 该组件使用QGraphicsView并着重于可用性和性能。 QGeoView公共界面遵循OpenLayers和Google ...
  • 当采用Qt编写一个较为简单的数据可视化界面时,按照Qt的demo其实也不是很难,但是如果编写一个相当完美的数据可视化界面,难度就一下子加大了。我进行数据可视化界面编写时,在Qt的平台上使用plotLab中的CTSLScope类...
  • 运行粒子 道格·莱特曼(Doug Letterman)的GPS航迹记录地图和动画工具 描述 RunParticles以.TCX,.GPX或格式显示多个GPS跟踪日志,并在上对其进行动画处理。 要求 RunParticles需要和 。 执照 ...
  • 正在安装 Qtplot与Python 2和3兼容。建议使用Anaconda Python发行版( )来scipy numpy和scipy类的软件包的安装。 创建一个新环境: conda create --name qtplot python=3.5 安装qtplot: pip install qtplot ...
  • 数据可视化 安装Python,QtQt安装程序框架和Doxygen: 在/ ,建立omniacreator: mkdir build cd build qmake ../src/omniacreator.pro make make install 您可以在build/omniacreator找到安装程序。
  • pyEarth是使用pyQt和OpenGL实现的地球的轻量级3D可视化:它是的3D对应。 用户可以: 导入shapefile以可视化3D地图。 使用Excel创建对象(节点或链接)。 将项目导出到Google Earth。 pyEarth版本 标准版...
  • Serial-Studio:多功能串行数据可视化和处理程序
  • 工具/助手,用于帮助解码和可视化流中的数据。 该工具是为希望可视化来自串行端口或网络套接字的数据(尚未实现)的用户提供的辅助工具。 开头的gif显示了如何从json加载协议和从共享库加载,这是该工具的正常操作...
  • 数据采集是整个数据可视化大屏界面电子看板系统核心功能,没有数据源,这仅仅是个玩具UI,没啥用,当然默认做了定时器模拟数据,产生随机数据,这个可以直接配置文件修改来选择采用何种数据采集方法,总结了一下基本...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,847
精华内容 1,938
热门标签
关键字:

qt数据可视化源码