HMI-51-【多媒体】搞地图 1

简介: 其实,说道搞地图,我也真不知道咋搞,完全没有搞过。看高德的`api`,基本都是基于`JS`,这个我更没有玩过了,所有,后面的内容深度和进度我不负责哈哈。

头图

HMI-51-【多媒体】搞地图 1

​ 其实,说道搞地图,我也真不知道咋搞,完全没有搞过。看高德的api,基本都是基于JS,这个我更没有玩过了,所有,后面的内容深度和进度我不负责哈哈。

image-20220405160126004

当前进度

​ 今天基本算是调通了在QWidget下显示qml元素了。如下图所示。目前界面上就是一个Rectangle上放置了一个Text


[toc]

关键字: HMIMultifunctionQtqmlQQuickWidget

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.0

Rectangle {

    width: 1920
    height: 1080
    color: "#FF0000"


    Image {
        id: name
        anchors.fill: parent
        source: "qrc:/Navigation/Resources/MultifunctionDisplay/Navigation/demo.png"
    }

    Rectangle{
        anchors.centerIn: parent
        width: 800
        height: 600
        color: "#123456"


        Text {
            id: demo
            anchors.centerIn: parent
            color: "#FFFFFF"
            font.bold: true
            font.pixelSize: 40
            text: qsTr("QML 地图测试页面")

        }
    }



}

让Qml控件始终和窗口大小一样

​ 这个方法就有很多了,比如我这个软件里面,我就没有改变窗口大小的区别,所以可以直接在布局中改变QQuickWidget属性,这样是最好的,我这里使用了重绘方法,代码如下:

void MFD_Navigation::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event);
    ui->quickWidget->setGeometry(this->rect());
}

不过这样会不会影响性能了,暂时还不知道。我已经不使用这个了,用了布局。

在Qml中加入一个按钮,当返回主菜单按钮

​ 这里用到了QmlQWidget交互了,最简单的方式还是信号槽,我用的就是这样。

Qml里面生成一个按钮

​ 下面这段代码就是在Qml里面实现一个按钮,最底层是一个Rectangle,设置布局,大小和颜色,上面是一个Text文本,仅设置了文字信息和布局,最上层是一个MouseArea,鼠标点击区域,填充整个Rectangle区域。并在鼠标点击函数里面发送了一个信号。

    Rectangle
    {
        id:menuButton
        anchors.top: parent.top
        anchors.topMargin: 200
        anchors.right: parent.right
        anchors.rightMargin: 50
        width: 120
        height: 40
        color: "#FF0000"

        Text {
            anchors.centerIn: parent
            id: menuButton_Text
            text: qsTr("返回主菜单")
        }

        MouseArea
        {
            anchors.fill: parent
            onClicked:
            {
                root.returnToMenu()
            }
        }
    }

​ 这里还有一个位置需要注意一下,我们需要在Qml的跟下面创建一个信号,如下图所示;

image-20220414211125984

在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);});
}

image-20220414211547883

今天就先到这里,后面需要等美术的UI来了在搞地图。

第三阶段成果展示

​ 目前已完成液晶仪表三种模式的初步显示,小模块后期根据精力更新了,主要还得找美术来搞资源,自己能力不够。暂未跟新计划。展示如下:

[video(video-yznBr6e3-1648369267384)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=679609061)(image-https://ucc.alicdn.com/images/user-upload-01/img_convert/4d157e1cb316b007a2cb9790cb2dbfde.png)(title-基于Qt的汽车仪表模拟 3.0)]

B站链接:https://www.bilibili.com/video/BV1WS4y137y1/

第二阶段成果展示

​ 目前以完成HUD界面及接口开发,液晶仪表舒适模式和运动模式的开发。展示如下:

[video(video-2AqJ88TY-1645273728489)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=594179292)(image-https://ucc.alicdn.com/images/user-upload-01/img_convert/e75563c3ce68bc980547dde8f6e265ba.png)(title-基于Qt的汽车仪表模拟 2.0)]

B站链接:https://www.bilibili.com/video/BV1aq4y1t7H7/

第一阶段成果展示

​ 目前以完成HUD界面及接口开发,液晶仪表舒适模式开发。展示如下:

[video(video-ArCvRvBQ-1642664938100)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=77197267)(image-https://ucc.alicdn.com/images/user-upload-01/img_convert/ccddd04e0cef191fd33d7f58d41adb24.png)(title-基于Qt的汽车仪表模拟 1.0))]

B站链接:https://www.bilibili.com/video/BV1qJ411X7Gs/


说明:

本项目中所使借鉴原型来自:[吉利] 博瑞GE | 仪表HMI设计吉利汽车HMI项目

多媒体部分是来自吉利博瑞2017旗舰版界面所有权和解释权都归吉利汽车所有。

设计图的所有权和解释权都归吉利汽车所有。

本项目所有资源文件均由打不死的小海复刻制作。

本项目代码暂时不会开源,有需要的源码的可与我联系,左上角二维码加微信。

本项目仅限学习交流、禁止商业使用。


博客签名2021

相关文章
|
SQL 前端开发 数据可视化
MySQL Workbench 使用教程 - 如何使用 Workbench 操作 MySQL / MariaDB 数据库中文指南
MySQL Workbench 是一款专门为 MySQL 设计的可视化数据库管理软件,我们可以在自己的计算机上,使用图形化界面远程管理 MySQL 数据库。有关 MySQL 远程管理软件,你可以选择 Windows 下的 HeidiSQL,MacOS 下的 Sequel Ace 或者 MySQL 官方推出的跨平台客户端 MySQL Workbench 。
11976 0
|
安全 数据处理 数据安全/隐私保护
C/S架构与B/S架构的适用场景分析
C/S架构(客户端/服务器架构)与B/S架构(浏览器/服务器架构)在适用场景上各有特点,主要取决于应用的具体需求、用户群体、系统维护成本、跨平台需求等因素。
1121 6
|
10月前
|
机器学习/深度学习 人工智能 计算机视觉
《深度剖析:一文读懂卷积神经网络中的感受野》
感受野是卷积神经网络(CNN)中关键概念,指神经元在输入数据中对应的区域大小。它影响模型对特征的捕捉能力,决定局部与全局特征的提取。单层卷积的感受野由卷积核大小、步长和填充决定;多层卷积时感受野会逐层累加扩大。合适感受野能提升模型性能,过大或过小都会影响效果。调整感受野可通过改变卷积核大小、步长或使用空洞卷积实现。深入理解感受野有助于优化CNN设计,推动AI技术发展。
518 4
|
9月前
|
算法 API 开发者
1688拍立淘接口搜索相似商品的实现方法
1688推出的拍立淘图片搜索功能,允许用户通过上传图片快速找到相似商品,极大提升购物体验。该API接口支持开发者集成图像搜索功能,提供商品管理、竞品分析等服务。接口采用HTTP POST请求,上传图片并返回相似商品列表,包括名称、价格、销量等信息。Python示例代码展示了如何使用该接口进行图片搜索。供稿者:Taobaoapi2014。
|
小程序 搜索推荐 算法
计算机毕业设计参考-微信小程序实现的校园餐饮预订与点餐平台源码
该系统分为管理端、小程序用户端和商户端三部分。管理端提供商品分类、商品、评价、订单和用户管理等功能,以及商户管理功能,可以管理商户信息、发布商品、查看店铺订单等。小程序用户端提供商品浏览、商品搜索、购物车、商品下单、个人信息、收货地址等功能,并使用基于协同过滤的推荐算法进行商品推荐。商户端提供与管理端相同的功能,并可以设置店铺信息和发布商品。用户和商户可以使用手机号码登录,获取验证码登录系统。该系统为校园点餐提供了一种方便快捷的解决方案,可以有效提升用户点餐的体验和商户的管理效率。
|
机器学习/深度学习 算法 数据挖掘
【机器学习】聚类算法中的距离度量有哪些及公式表示?
聚类算法中常用的距离度量方法及其数学表达式,包括欧式距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、余弦相似度等多种距离和相似度计算方式。
1265 1
|
移动开发 前端开发 JavaScript
前端跨域的解决方案?
前端跨域的解决方案?
343 0
|
存储 安全 小程序
DaaS架构及落地 (一)
DaaS 数据即服务是一种服务模式,即将数据以服务的形式,向客户提供价值,参与到客户的业务中,它也是软件即服务的一种细分领域。同时DaaS 拥有云计算的通用特点,包括以租代买,按需付费、按用付费。 本文介绍 DaaS 的架构及实现选择,对于拥有大量优质数据资源的企业,可以参考构建起数据业务线,进而实现数据的资产化、价值化。需要说明的是本文中的各种图例仅是逻辑示意,均做了简化。
1604 1
DaaS架构及落地 (一)
|
Kubernetes 应用服务中间件 nginx
k8s教程(pod篇)-升级与回滚
k8s教程(pod篇)-升级与回滚
563 1