Qt编写可视化大屏电子看板系统32-模块10大屏地图

2022-05-15科技209

一、前言大屏地图模块采用浏览器模块+echart组件,Qt自带了webkit或者webengine模块,其中在win上mingw编译器的Qt5.6以后的版本,没有了浏览器模块,这个就需要用第三方的浏览器模块比如miniblink或者cef等,个人偏好miniblink因为足够简单。为了能够兼容所有的Qt版本和应用场景,特意专门写了通用浏览器控件独立的类webview,只要new即可,会自动判断Qt版本以及存在哪种浏览器模块就用哪种,优先采用Qt自带的浏览器模块,除非手动指定miniblink就用miniblink浏览器模块。

中间大屏地图多种样式:

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

五、核心代码#include "frmmodulemap.h"#include "ui_frmmodulemap.h"#include "quihelper.h"#ifdef echarts#include "echarts.h"#include "echartjs.h"#endiffrmModuleMap::frmModuleMap(QWidget *parent) : QWidget(parent), ui(new Ui::frmModuleMap){ ui-setupUi(this); this-initForm; this-initBg; this-changeMapStyle(false);}frmModuleMap::~frmModuleMap{ delete ui;}void frmModuleMap::showEvent(QShowEvent *){ static bool isShow = false; if (!isShow) { isShow = true; QTimer::singleShot(100, this, SLOT(loadBg)); }}void frmModuleMap::resizeEvent(QResizeEvent *){ if (AppConfig::MapStyle == "image") { loadImage; } else { resizeMap; }}void frmModuleMap::initForm{ isLoad = false; labMap = new QLabel; labMap-setObjectName("labMap"); labMap-setAlignment(Qt::AlignCenter); labMap-setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); this-layout-addWidget(labMap);#ifdef echarts web = new WebView(this); web-setLayout(ui-verticalLayout); connect(web, SIGNAL(loadFinished(bool)), this, SLOT(loadFinished)); connect(web, SIGNAL(receiveDataFromJs(QString, QVariant)), this, SLOT(receiveDataFromJs(QString, QVariant)));#endif //样式改变了需要重新载入地图,因为颜色变了 connect(AppEvent::Instance, SIGNAL(changeStyle), this, SLOT(loadBg)); //地图样式改变 connect(AppEvent::Instance, SIGNAL(changeMapStyle), this, SLOT(changeMapStyle));}void frmModuleMap::initBg{#ifdef echarts web-setBgColor(AppConfig::ColorMainBg);#endif}void frmModuleMap::loadBg{ if (AppConfig::MapStyle == "image") { loadImage; } else { loadMap; }}void frmModuleMap::loadImage{ QString fileName = "bg_china1.png" if (AppConfig::ThemeName == "紫色风格") { fileName = "bg_china1.png" } else if (AppConfig::ThemeName == "蓝色风格") { fileName = "bg_china2.png" } else if (AppConfig::ThemeName == "深蓝风格") { fileName = "bg_china3.png" } else if (AppConfig::ThemeName == "黑色风格") { fileName = "bg_china4.png" } //等比例平滑缩放 QPixmap pix(QString("%1/image_bigscreen/%2").arg(QUIHelper::appPath).arg(fileName)); pix = pix.scaled(labMap-size, Qt::KeepAspectRatio, Qt::SmoothTransformation); labMap-setPixmap(pix);}void frmModuleMap::loadMap{#ifdef echarts QString fileName = QString("%1/map_echarts.html").arg(ConfigPath); url = "file:///" + fileName; Echarts::Instance-setHeight(this-height); Echarts::Instance-setFileName(fileName); Echarts::Instance-setSaveFile(SaveFile); Echarts::Instance-setZoom(1.2); Echarts::Instance-setMapJsName("china"); Echarts::Instance-setMapAreaName("china"); QStringList cityName, cityValue, cityPoint, cityColor, cityTip; cityName "上海" "北京" "成都" "武汉" "厦门" "广州" cityValue "250" "220" "150" "180" "140" "170" cityPoint "121.48,31.22" "116.46,39.92" "104.06,30.67" "114.31,30.52" "118.1,24.46" "113.23,23.16" //设置颜色,也可以定义成不同的颜色,牛逼吧 for (int i = 0; i cityName.count; i++) { cityColor AppConfig::ColorPercent; } //设置提示信息,为空则按照默认规则,更牛逼吧 //提示信息可以是html字符串(这样就强大到爆了) 换行符是 br for (int i = 0; i cityName.count; i++) { cityTip QString("%1 = %2%").arg(cityName.at(i)).arg(cityValue.at(i)); } Echarts::Instance-setCityName(cityName); Echarts::Instance-setCityValue(cityValue); Echarts::Instance-setCityPoint(cityPoint); Echarts::Instance-setCityColor(cityColor); Echarts::Instance-setCityTip(cityTip); QString html; if (AppConfig::MapStyle == "point") { html = Echarts::Instance-newChartPoint; } else if (AppConfig::MapStyle == "move") { cityValue.clear; cityValue "0" "0" "0" "0" "0" "1" Echarts::Instance-setCityValue(cityValue); html = Echarts::Instance-newChartMove("北京"); } else if (AppConfig::MapStyle == "world") { loadMapWord; html = Echarts::Instance-newChartMove("中国"); } else if (AppConfig::MapStyle == "area") { //如果要加载省份而不是市则设置 dirName和areaName 都是省份名称就行 loadMapArea("江西", "吉安市"); html = Echarts::Instance-newChartPoint; } //下面为两种方式加载网页,如果内容为空则加载网页文件否则加载内容 //一般为了保密建议加载内容,这样看不到生成的网页文件 if (Echarts::Instance-getSaveFile) { web-load(url); } else { QString baseUrl = QString("%1/").arg(ConfigPath); web-load("", html, baseUrl); //QString )); } }}

相关文章

我叫MT3坐骑获取途径详细介绍?

海龟坐骑获取途径在我的记忆里(各种道听途说+自身经历)有三种:一.在wlk时出的地图里钓鱼,1/2000的几率,推荐北风苔原。(补充,wlk之后出的地图都会出,但是几率因为钓鱼列表的扩充会有所改变)二.听说的,魔兽tgc卡牌抽奖,输兑换码,现在应该没了。三.3级要塞渔场,可以钓到坠月鲤鱼,亲测几率大...

惊悚乐园封不觉用的记忆法?

“地图记忆法”:具体办法就是拆分记忆:以一块较为宽广的区域为界,找一个相对空阔的点站定,环视周围,锁定几处细节并记下。这样他就等于是把这整块区域作为一块拼图,装进了脑子里。如法炮制几次,便可在脑中构建出多块拼图,然后通过相互间的位置关系,以连锁思维慢慢回忆出完整的地图。封不觉记不下来的地图总共有两种...

满蜜是什么意思?

蜜蜡满蜜指的是整个蜜蜡的内部结构相对紧密,质地十分的细腻,而且它是一种质量较高的蜜蜡,其实满蜜只是对蜜蜡的一种形容,指其内部所含蜡质较为浓厚,外表体现的颜色为黄色或深黄色,且没有类似金珀的透光性。蜜蜡为非晶质体部分组织较疏松而又不含其他矿物的蜜蜡能浮于水(英文蜜蜡Amber一词自阿拉伯文,其原义即为...

红酒的保质期大概多长时间?

生活中很多酒是有一定时间的保质期的,比如葡萄酒就是这样的,明确标明了保质期,那么这葡萄酒过可保质期还能喝吗?1葡萄酒有保质期吗葡萄酒有保质期。在我国的酒中酒精度超过了20%就可不明确标注保质期,而葡萄酒的酒精度一般在8%~15%之间,属于低度的酒,因此,我国的葡萄酒都是有明确保质期标注。2过期葡萄酒...

颜色的基本色有多少种?

三原色指色彩中不能再分解的三种基本颜色,我们通常说的三原色,即品红、黄、青(是青不是蓝,蓝是品红和青混合的颜色)。三原色可以混合出所有的颜色,同时相加为黑色,黑白灰属于无色系。 三原色指的是自然界中自然存在的三种颜色,红,黄,蓝。红色+黄色=橙色,根据两种颜色比例的不同分别可以形成(由黄色多到红色多...

血鹦鹉怎么养?

血鹦鹉是慈鲷科的鱼类,因其特别的长相,所以又称为财神鱼, 血鹦鹉全身通红,胖胖的体型和小小的眼睛,显得十分讨人喜欢。养血鹦鹉最重要的是保持它鲜艳的颜色,很多人饲养血鹦鹉后会发现颜色越来越淡,可能是饲料原因,喂养这种发色的鱼一定要注意饵料的多样性,多样的饵料不仅利于血鹦鹉发色,还利于血鹦鹉增强体质,...

黄加绿等于什么色?

要回答你这个问题应该先了解我们生活中常用的几种色彩模式:三原色、三基色、CMYK。 三原色是美术上的概念,指红黄蓝,因为这三种颜色的配合可以调出除了黑白以外的几乎所有颜色,故称为三原色。 在三原色里绿色为“黄”“蓝”混合色,绿色加黄色混合的色为兼于黄绿之间的色“黄绿色”。 三基色是指的显像管的技术,...

有没有什么游戏,画面比较唯美的?我是画面党,跪求?

04 首推《ABZU》,这是陈汉星继《风之旅人》后的有一部大作。是一部深海探险类游戏。 游戏流程的话也不长,基本上四五个小时就可以通关,但是如果单说画面的话,真的是非常非常非常好看了。 首先看一下截图吧: 基本上《ABZU》的画面真的是教科书级别的唯美好看,色调统一但是颜色又很丰富,而且不灰蒙蒙的,...

50分同级别钻石,H色和I色镶在戒托上肉眼颜色差别大不大?

专业人士都看不出的颜色差! 就更别说普通人了,颜色相差本身就很小,我们要知道钻石等级划分是很严谨的,这些颜色划分可不是用肉眼能分辨的,颜色的形成和对比都很微渺,都有精确的颜色检测需要借助检测仪。 通常我们会把钻石分无色(DEF)接近无色(GHIJ)微黄色(KLM)浅黄色(NOPQRSTUVWXYZ)...

颜色……对于摄影而言,颜色是会起到什么作用的呢?

颜色(我理解的应该是色彩)对于摄影,处于和光影同样重要的地位。 1.首先是对主题情绪氛围的渲染,通过冷色暖色对比运用表现氛围情绪,或激情或宁静,增强冲击力。 2.对于摄影构图的影响,色彩对于人眼具有第一冲击力,我们会第一个感受到色彩,然后是内容。比如我们可以通过色彩塑造内容的平衡,或者通过一个小俏色...

咖色系怎样搭配出时尚高级感?

21克拉白领丽人| 精选街拍、穿衣技巧等时尚资讯。 咖色系怎样搭配出时尚高级感?时尚里面总有一句话,选对颜色的时装搭配,才能让自己穿出高级感! “咖啡色虽然属于中性色,但偏色性上更偏向于暖色调,在搭配上大多选择深色系,如橄榄绿、深红色、熟褐色、深蓝色等,或者选择中性色驼色、卡其色等颜色。” 不管是大...

火鸡是怎么样的?

火鸡(学名:Meleagris gallopavo):亦称吐绶鸡。体长110-115厘米。翼展125-144厘米,体重2.5-10.8千克。嘴强大稍曲。头颈几乎裸出,仅有稀疏羽毛,并着生红色肉瘤,喉下垂有红色肉瓣。 火鸡背稍隆起。体羽呈金属褐色或绿色,散布黑色横斑;两翅有白斑;尾羽褐或灰,具斑驳,末...