首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Qt编写数据可视化大屏界面电子看板9-曲线效果

为了编写数据可视化大屏界面电子看板系统,为了能够兼容Qt4和嵌入式linux系统,尤其是那种主频很低的,但是老板又需要在这种硬件上(比如树莓派、香橙派、全志H3、imx6)展示这么华丽的界面时,就必须用最传统的painter方法来实现所有的控件了,一开始使用的QChart来实现各个子控件,在使用过程中发现比较鸡肋,个人感觉QChart是所有的子模块中源码写的最烂的,本人把QChart的源码看了一遍,比如饼图控件,居然放置一个label用来显示对应的文字描述,都懒得用painter去绘制,而且还有大量的类型转换,这个就效率大大降低了,虽然效果上挺好的,比如继承自QAnimation类自定义的chart动画类,还有个整体换肤的,但是在大量数据展示的时候,卡的一逼,比QWT和QCustomPlot差很远,本人看过QCustomPlot的源码,尽管就一个文件,(其实作者那边肯定是多个文件的,只不过发布的时候合并成一个文件发布的,毕竟这样对于用户来说使用还是很方便的,就是阅读不方便,毕竟大部分人用来是直接使用的而不是研究代码的。)但是里边的代码质量非常好非常高,本人特别推崇用QCustomPlot来展示曲线和柱状图等,效率很高,本人亲自试过最大展示50W数据点,还可以。据朋友所说,可能QWT质量还要更高,我没有研究过QWT的源码,不予置评,估计有可能是的。

04

Qt编写数据可视化大屏界面电子看板4-布局另存

布局另存是数据可视化大屏界面电子看板系统中的额外功能之一,主要用于有时候用户需要在现有布局上做个微调,然后直接将该布局另存为一个布局配置文件使用,可以省略重新新建布局重新来一次大的调整的工作,此功能主要是用到了配置文件的保存,另存为一个不同名字的配置文件即可,属于非常简单的功能,在代码上来讲,其实Qt的配置文件类QSettings使用起来不要太方便,不仅支持WIN的注册表的读取写入,还支持跨平台的INI文件,说白了其实就是个文本文件,个人比较喜欢用INI文件作为配置文件,这样一方面跨平台,本人平时主要在嵌入式linux上做开发,INI文件是做好的选择。

02

Qt编写数据可视化大屏界面电子看板8-调整间距

在数据可视化大屏界面电子看板系统中,前期为了使用目标客户机,调整间距是必不可少的工作,QMainWindow中的QDockWidget,会默认生成布局和QSplitter调整宽高大小,鼠标移动到模块之间的缝隙处,鼠标指针会形成调整大小间距的那种,上下左右拉动就可以调整大小了。Qt的dock默认底部布局是被全部填充的,即一旦产生了底部Dock,则底部的左侧和右侧也属于底部布局,此时需要用setCorner方法来把这个布局给切掉,比如底部布局的左侧部分,可以切掉当做左侧布局使用,setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea);底部布局右侧部分,可以切掉当做右侧布局使用,setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea);这样左右两侧的布局就有更大的空间来放置窗体了,这样可能更适合大部分的应用场景。如果只是切掉了一部分,比如切掉了右侧,则左侧和中间部分当做底部布局,放置一个长条状的大窗体,也是非常美观的,主要看具体的窗体大小了。

03

Qt编写数据可视化大屏界面电子看板6-窗体打开关闭

二级窗体的打开与关闭,这个功能也很有必要,由于整个系统中各种模块数量窗体数量比较多,后期可能还会增加更多,在4K屏幕上可以显示很多的模块,但是有时候有些模块不想显示出来,就需要将该模块关闭掉,直接在二级窗体的标题栏上增加关闭按钮,可能会影响整体的布局,此时提供鼠标右键菜单来控制各个模块的开关,就非常爽了,QDockWidget上场,QMainWindow类中如果有Dock类,则会自动生成右键菜单,自动将加载的窗体的名称生成菜单,前面可以打钩表示开启,没有打钩表示关闭,默认都是开启的,saveState()函数也会记录各个模块最后的开启和关闭状态,所以在应用restoreState()函数时候也会自动控制模块的开关,不得不说Qt在这个功能点上是下足了功夫,封装的非常好非常棒顶呱呱!

05

Qt编写数据可视化大屏界面电子看板7-窗体浮动

窗体浮动的场景也比较多,用途也比较大,比如视频监控模块,有时候需要调整大小和位置,而不是作为dock嵌入到布局中,一旦嵌入到布局中,大小和位置都被布局接管了,只能任由布局使唤,按在地上摩擦的那种。所以窗体浮动独立出来以后,就可以当做单独的窗体使用了,八个方位任意调整大小,(做到这里,是不是想起来,很多人写的无边框窗体类,自己写代码实现边框的拉伸调整大小?原来Qt也内置类无边框调整大小的位置哈!)同时窗体可以拖动到任意位置,比如可以拖动到中间部位占领一个位置,能够调整到最佳的16:9的大小效果。此时的视频看起来就很爽了,这个效果其实是Qt内置的,我在自定义的标题栏中增加了双击浮动,再次双击最大化显示的功能而已。

03

Qt编写数据可视化大屏界面电子看板5-恢复布局

恢复布局这个功能在整个数据可视化大屏界面电子看板系统中非常有用,很多时候不小心把现有布局拖动乱了,(当然如果不想布局被拖动改动,可以修改配置文件中的MoveEnable参数来控制,默认为真表示可以任意拖动布局,后期如果不想再被拖动可以设置为假。)人总归有不小心的时候,一旦不小心拖动了布局,则可以在软件没有退出之前恢复,鼠标右键菜单增加恢复布局这个功能就很有必要了,在保存布局以前,单击这个恢复布局,会自动恢复到当前布局的初始状态,如果不小心保存布局了,那就只能重新新建布局了,或者如果布局有备份的话就更好。恢复布局只能对当前布局进行恢复,而且是在未保存布局以前,以后就麻烦。

03

Qt编写数据可视化大屏界面电子看板3-新建布局

能够新建布局,也是数据可视化大屏界面电子看板系统中的必备功能之一,新建布局这样的功能一般做到右键菜单中,单击新建布局菜单,弹出输入框要求输入新的布局的名称,为了更符合国情,直接支持中文名称,保存成配置文件直接中文名称命名,这样方便用户理解,Qt5以来对乱码的问题解决的就比较好了,不像Qt4时代稍不留神就乱码了,Qt5只要保证源码文件utf-8编码基本上就很少遇到乱码问题了。新建布局必须要有个默认的窗体排列,Qt中的dock窗体,默认布局会以窗体的sizehint作为大小参照标准,也不一定是完全正确的,还跟窗体中的子控件有关系,不过这些都不影响布局以后重新从配置文件加载的布局,QMainWindow提供saveState()函数直接保存当前窗体的所有布局位置大小等信息到配置文件,至于配置文件的内容格式,那是人类无法理解的格式,反正我是看不懂,这些都没有关系的,你重新用restoreState()函数加载读取配置文件的信息时,会自动应用,这样就很爽很完美了。

06

Qt编写数据可视化大屏界面电子看板10-改造QCustomPlot

为了抛弃对QChart的依赖,以及echart的依赖,(当然,后期也会做qchart的版本和echart的版本,尤其是echart的版本是肯定会做的,毕竟echart的效果牛逼的一塌糊涂,全宇宙最牛逼吧。)特意对QCustomPlot进行了大刀阔斧的改造,当然这个改造不是直接在源码上修改,这个就破坏了源码的完整性,说不定被QCustomPlot的作者知道了有种被QJ的感觉,我得改造是直接继承QCustomPlot中的部分类开始的,比如为了实现横向柱状图,特意继承自QCPItemRect类来实现的,包括了横向柱状图和横向柱状分组图。在这个横向柱状图的自动计算过程中,居然用到了十几年前学习的二元一次方程,自动计算数据和柱状图位置,给定两个数据点绘制矩形。

03

Qt编写数据可视化大屏界面电子看板2-配色方案

做完整个数据可视化大屏界面电子看板系统后,为了提升点逼格,需要提供好几套默认的风格样式以供选择,这样用户可以选择自己喜欢的配色方案来作为整个系统的颜色方案,去看了下市面上大部分的大屏电子看板系统,都是以蓝色为主,部分黑色,估计也许这就是大众的审美吧,那就在数据可视化大屏界面电子看板系统中也加入蓝色风格、深蓝色风格、黑色风格,三种,加上默认的紫色风格,共计内置4套风格选择,Qt的QSS是我见过的最牛逼的换肤控制样式界面颜色的东东,这个工具用好了,别提有多爽,直接qApp->setStyleSheet(qss);可以对整个应用程序换肤,如果自定义的控件定义了Q_PROPERTY的话,也会立即更改自定义控件的属性。

00

Qt编写数据可视化大屏界面电子看板12-数据库采集

数据采集是整个数据可视化大屏界面电子看板系统核心功能,没有数据源,这仅仅是个玩具UI,没啥用,当然默认做了定时器模拟数据,产生随机数据,这个可以直接配置文件修改来选择采用何种数据采集方法,总结了一下基本上会有这样几种数据源,timer-模拟数据 db-数据库采集 tcp-网络采集 http-post请求,大量的web会选择采用http作为post网络请求来获取数据,而对于本人来说,更喜欢用数据库作为数据源,这样可以避免很多扯皮的事情,比如请求出错或者得到错误的数据等,而数据库是死的,不涉及到其他任何程序的干扰,也不需要做任何对接,只要规范好数据库表和字段即可。

03

树莓派的产品定位,以及探讨与ARM开发板的区别

1、树莓派是一款基于Linux系统的单板机电脑。它由英国的树莓派基金会所开发,目的是以低价硬件及自由软件刺激在学校的基本的计算机科学教育。树莓派被赋予的希望是,能够帮助全世界的孩子学习编程,并能够了解计算机是如何工作的; 2、树莓派只要加上USB键盘、鼠标、HDMI屏幕就立马变成一个小型电脑,用于学习编程(Linux系统),系统中预装多种编程软件和环境,方便使用;并且利用树莓派,可以搭建多种应用:路由器、智能小车、智能家居、服务器等,这些都有成熟的开源代码; 3、树莓派跟windows虚拟机跑linux操作系统有什么区别?   1)对于系统使用,本质上没啥区别,都是Linux操作系统罢了,主要有以下三点区别;   2)软件上,树莓派预装很多开发软件,方便使用者直接用,不用经过繁琐的软件安装;   3)硬件系统不同,树莓派拥有丰富的硬件外接接口,用来对接其它硬件做试验;比如树莓派(作为主机)与Aduino(AVR内核的卡片机,作为从机)配合工作;   4)基于树莓派设备基础的社区生态比较完善,有很多开发者在树莓派软硬件基础上设计很多有用的工具和项目; 4、Raspberry的几种操作系统:   1)NOOBS   2)Raspbian   3)Ubuntu Mate   4)Snappy Ubuntu Core; 注意:采用不同的操作系统,本身的软硬件资源是不同的,视乎应用而选定; 5、常见的Linux系统:   1)商业版:red hat 、CentOs、suse;   2)开源版:debian ubuntu ;   3)系统的选择取决于你拥有的硬件,和商业应用。 6、树莓派上常用的脚本语言:Shell(Linux系统管理,运行软件:Bash/Dash/Tsch/LXTerminal)、Python(跨平台管理:服务器、网站管理); 7、树莓派自2012年推出以来全球销量已达1250万块,世界第三大计算平台。

02

杨校老师项目之基于树莓派的物联网智能插座的设计与实现

技术:C语言、树莓派等 摘要:随着计算机技术的不断发展,特别是无线网络技术的快速发展,智能手机、智能电器等智能设备不断上市,智能家居已进入消费领域。智能家居是指集射频技术、综合布线、计算机网络、安防、自动控制等于一体的智能化家居控制系统。目前,物联网设备价格高、设计复杂、软件集成度不高,极大地阻碍了智能家居的普及,幸运的是,树莓派的出现解决了这一难题。 第一款Raspberry Pi设备于2012年2月发布(Raspberry Pi 1 Model B,第1代)。事实证明,这是立竿见影的成功,部分原因是价格低至35美元。通过添加一些不包括在内的外围设备(键盘,鼠标,显示器,SD存储器),可以快速建立一台运行Raspbian(一种基于Debian的Linux操作系统)的完整的计算机。它通常被称为Single板载计算机(SBC),这意味着它运行一个完整的操作系统,并具有足够的外围设备(内存,CPU,功率调节),无需添加硬件即可开始执行。 为了降低智能插座的开发成本和开发难度,设计选用价格低廉、兼容性强、性能较强的 Raspberry Pi 3 作为智能插座的开发板,选用可移植性强的Linux系统作为开发环境,选用基于Linux内核的Raspbian作为树莓派的系统。本文简要介绍了有关于树莓派的知识和国内外树莓派的应用现状,还有Linux系统的概貌。在介绍了硬件的选型、软件开发环境的基础上,从软件的总体设计、 Linux 下的网络编程、 GPIO 的配置等方面叙述了基于树莓派的物联网智能插座的设计与实现过程,最终完成了远程控制对应继电器开关的功能。经测试,系统运行稳定,能够满足智能化的基本要求。关键词:树莓派;智能插座;网络编程; GPIO

01
领券