HMI-51-【多媒体】搞地图 1
HMI-51-【多媒体】搞地图 1
其实,说道搞地图,我也真不知道咋搞,完全没有搞过。看高德的api
,基本都是基于JS
,这个我更没有玩过了,所有,后面的内容深度和进度我不负责哈哈。
当前进度
今天基本算是调通了在QWidget
下显示qml
元素了。如下图所示。目前界面上就是一个Rectangle
上放置了一个Text
。
文章目录
- HMI-51-【多媒体】搞地图 1
- 当前进度
- QWidget下调用QML
- QML 代码
- 让Qml控件始终和窗口大小一样
- 在Qml中加入一个按钮,当返回主菜单按钮
- Qml里面生成一个按钮
- 在Widget里面链接槽函数
- 在主文件中链接槽函数
- 第三阶段成果展示
- 第二阶段成果展示
- 第一阶段成果展示
关键字:
HMI
、Multifunction
、Qt
、qml
、QQuickWidget
QWidget下调用QML
这个其实不用我们操心了,哈哈,Qt直接给了我们一个控件QQuickWidget
。直接放进去,写上qml
的路径就可以了。
ui->quickWidget->setSource(QUrl("qrc:/Navigation/QML/MultifunctionDisplay/MFD_Navigation/QML/main.qml"));
QML 代码
QML代码如下:这里要插一句,以前写QML
的时候,发布的时候需要带上QML
文件,不知道现在会不会存在了
import QtQuick 2.0Rectangle {width: 1920height: 1080color: "#FF0000"Image {id: nameanchors.fill: parentsource: "qrc:/Navigation/Resources/MultifunctionDisplay/Navigation/demo.png"}Rectangle{anchors.centerIn: parentwidth: 800height: 600color: "#123456"Text {id: demoanchors.centerIn: parentcolor: "#FFFFFF"font.bold: truefont.pixelSize: 40text: qsTr("QML 地图测试页面")}}}
让Qml控件始终和窗口大小一样
这个方法就有很多了,比如我这个软件里面,我就没有改变窗口大小的区别,所以可以直接在布局中改变QQuickWidget
属性,这样是最好的,我这里使用了重绘方法,代码如下:
void MFD_Navigation::paintEvent(QPaintEvent *event)
{Q_UNUSED(event);ui->quickWidget->setGeometry(this->rect());
}
不过这样会不会影响性能了,暂时还不知道。我已经不使用这个了,用了布局。
在Qml中加入一个按钮,当返回主菜单按钮
这里用到了Qml
与QWidget
交互了,最简单的方式还是信号槽,我用的就是这样。
Qml里面生成一个按钮
下面这段代码就是在Qml里面实现一个按钮,最底层是一个Rectangle
,设置布局,大小和颜色,上面是一个Text
文本,仅设置了文字信息和布局,最上层是一个MouseArea
,鼠标点击区域,填充整个Rectangle
区域。并在鼠标点击函数里面发送了一个信号。
Rectangle{id:menuButtonanchors.top: parent.topanchors.topMargin: 200anchors.right: parent.rightanchors.rightMargin: 50width: 120height: 40color: "#FF0000"Text {anchors.centerIn: parentid: menuButton_Texttext: qsTr("返回主菜单")}MouseArea{anchors.fill: parentonClicked:{root.returnToMenu()}}}
这里还有一个位置需要注意一下,我们需要在Qml的跟下面创建一个信号,如下图所示;
在Widget里面链接槽函数
这里我单独开了一个函数,我感觉后面可能会有好多个信号和槽,这样放在一起好管理,代码如下
void MFD_Navigation::initQML()
{mItem = ui->quickWidget->rootObject();QObject::connect(mItem,SIGNAL(returnToMenu()),this,SLOT(slot_returnToMenu()));}
槽函数就非常简单了,就是再发送一个信号给他的上级。代码如下
void MFD_Navigation::slot_returnToMenu()
{emit signal_returnToMenu();
}
在主文件中链接槽函数
void MultifunctionDisplay::initMenuDisplay()
{QGridLayout* pg=new QGridLayout;pg->setMargin(0);pg->setSpacing(0);m_menuDisplay = new MFD_MenuDisplay(ui->tab_menu);pg->addWidget(m_menuDisplay);ui->tab_menu->setLayout(pg);connect(m_menuDisplay,&MFD_MenuDisplay::signal_menuIndex,this,[=](int index){ui->tabWidget_mainFrame->setCurrentIndex(index);});
}
今天就先到这里,后面需要等美术的UI来了在搞地图。
第三阶段成果展示
目前已完成液晶仪表三种模式的初步显示,小模块后期根据精力更新了,主要还得找美术来搞资源,自己能力不够。暂未跟新计划。展示如下:
基于Qt的汽车仪表模拟 3.0
B站链接:https://www.bilibili.com/video/BV1WS4y137y1/
第二阶段成果展示
目前以完成HUD界面及接口开发,液晶仪表舒适模式和运动模式的开发。展示如下:
基于Qt的汽车仪表模拟 2.0
B站链接:https://www.bilibili.com/video/BV1aq4y1t7H7/
第一阶段成果展示
目前以完成HUD界面及接口开发,液晶仪表舒适模式开发。展示如下:
基于Qt的汽车仪表模拟 1.0)
B站链接:https://www.bilibili.com/video/BV1qJ411X7Gs/
说明:
本项目中所使借鉴原型来自:[吉利] 博瑞GE | 仪表HMI设计、吉利汽车HMI项目。
多媒体部分是来自吉利博瑞2017旗舰版界面所有权和解释权都归吉利汽车所有。
设计图的所有权和解释权都归吉利汽车所有。
本项目所有资源文件均由**打不死的小海**复刻制作。
本项目代码暂时不会开源,有需要的源码的可与我联系,左上角二维码加微信。
本项目仅限学习交流、禁止商业使用。
HMI-51-【多媒体】搞地图 1相关推荐
- 微信小程序集合4(51报名管家+地图定位和导航+仿ofo共享单车+仿麦当劳点餐+购物节抽奖+婚庆摄影商店)
- 【前端搞地图】如何设计一张更真实的 3D 地图
- DOTA6.51中文版地图下载
<script language='javascript' src='http://ad.paqiang.com.cn/Header.js'></script>dota6.51 ...
- HMI-64-【多媒体】Ui全部制作完成
HMI-64-[多媒体]Ui全部制作完成 文章目录 HMI-64-[多媒体]Ui全部制作完成 ☀前言 框架图 函数调用流程 ✍本文计划 ☢当前进度 ☯功能实现 1 菜单 3 空调 4 行车记录仪 5 ...
- 百度地图3.0实现图文并茂的覆盖物
前一段时间搞地图要显示周围房源信息,之前搜索的都是使用2.x的,如今百度地图官方新出了3.0版本号因为之前思维局限一直没有实现图文并茂,今天看了别人2.0的实现方式,把它用到3.0上成功显示,以下看一 ...
- java地图瓦片_百度地图瓦片层级范围对照表
最近搞地图搞的多,因为项目要求需要做个离线地图来添加覆盖物,网上有篇博客教我们怎么下载瓦片的,对应的是java代码,但是每次操作去看console里的层级和范围超级麻烦,而网上有提供软件下载,感觉有点 ...
- 一文彻底搞懂前端监控 等推荐
大家好,我是若川.话不多说,这一次花了几个小时精心为大家挑选了20余篇好文,供大家阅读学习.本文阅读技巧,先粗看标题,感兴趣可以都关注一波,一起共同进步. 前端点线面 前端点线面 百度前端研发工程师, ...
- 百度地图瓦片层级范围对照表
最近搞地图搞的多,因为项目要求需要做个离线地图来添加覆盖物,网上有篇博客教我们怎么下载瓦片的,对应的是java代码,但是每次操作去看console里的层级和范围超级麻烦,而网上有提供软件下载,感觉有点 ...
- 终于搞定那个顽固的病毒
那个一上网就跳到cn.yahoo.com的病毒实在是让我忍无可忍了,就发了几个小时给摆平了,真的是非常的费劲呀,很佩服那个制作病毒的哥们,真是高手中的高手,但是还是有漏洞的,把各个盘下的auto文件全 ...
最新文章
- 直线段检测算法(LSD:a Line Segment Detector)
- 高度平衡二叉树的构建_平衡二叉树建立及其增删改查(JAVA)
- web前端技巧-ES6新特性与重点知识汇总(一)
- Ubuntu下创建Vim+Taglist+Cscope+Ctags组合编辑器
- 第一阶段:前端开发_Mysql——表与表之间的关系
- 什么是创新?如何创新?
- 利用多线程提高程序性能(for Android)
- redux-form(V7.4.2)笔记(三)之Flow简介
- ServerVariables 变量
- PASS云计算书简介——接近完美的模式
- BUUCTF-[XMAN2018排位赛]ppap
- MySQL安装后默认密码的问题
- 怪物掉落装备修改属性
- tableau和oracle dv,比较Power BI和Tableau,好比用奔驰对比奥迪
- select苹果手机样式设置
- 接口测试面试题汇总(含答案)
- Python爬虫系列之爬取某奢侈品小程序店铺商品数据
- phpstorm使用小技巧一
- 分式加法JAVA程序_十五:实战2-分式计算器
- 把一个运行的Docker容器做成镜像