HMI-57-【多媒体】收音机 1

简介: 前面几篇已经音乐播放器简单搞了一下,可以放音乐了。今天艺术家发来了收音机的界面,今天先搞搞。

头图

HMI-57-【多媒体】收音机 1

​ 前面几篇已经音乐播放器简单搞了一下,可以放音乐了。今天艺术家发来了收音机的界面,今天先搞搞。

当前进度

​ 今天把上下菜单按钮实现了,和音乐一模一样,下面就直接上代码,没有啥要说的,想知道详细的可以看前面几篇音乐的解析,或者直接看的代码吧。


[toc]

关键字: HMIMultifunctionQtQMediaPlayer收音机

头文件

#ifndef MFD_RADIO_H
#define MFD_RADIO_H

#include <QWidget>

namespace Ui {
class MFD_Radio;
}

class MFD_Radio : public QWidget
{
    Q_OBJECT

public:
    explicit MFD_Radio(QWidget *parent = nullptr);
    ~MFD_Radio();
private slots:
    /**
     * @brief on_pushButton_menu_clicked
     * 主菜单按钮槽函数
     */
    void on_pushButton_menu_clicked();
    /**
     * @brief on_pushButton_navigation_clicked
     * 导航按钮槽函数
     */
    void on_pushButton_navigation_clicked();
    /**
     * @brief on_pushButton_multimedia_clicked
     * 音乐按钮槽函数
     */
    void on_pushButton_multimedia_clicked();
    /**
     * @brief on_pushButton_radio_clicked
     * 收音机按钮槽函数
     */
    void on_pushButton_radio_clicked();
    /**
     * @brief on_pushButton_phone_clicked
     * 收音机按钮槽函数
     */
    void on_pushButton_phone_clicked();
    /**
     * @brief on_pushButton_return_clicked
     * 返回按钮槽函数
     */
    void on_pushButton_return_clicked();
    /**
     * @brief on_pushButton_menubtn_clicked
     * 子菜单按钮槽函数
     */
    void on_pushButton_menubtn_clicked();
    /**
     * @brief on_pushButton_am_clicked
     * AM按钮槽函数
     */
    void on_pushButton_am_clicked();
    /**
     * @brief on_pushButton_fm_clicked
     * FM按钮槽函数
     */
    void on_pushButton_fm_clicked();

signals:
    /**
     * @brief signal_returnToMenu
     * 返回主菜单信号
     */
    void signal_returnToMenu();
    /**
     * @brief signal_return
     * 返回函数
     */
    void signal_return();
    /**
     * @brief signal_ToNavigation
     * 转到导航信号
     */
    void signal_ToNavigation();
    /**
     * @brief signal_ToMusic
     * 转到音乐
     */
    void signal_ToMusic();
    /**
     * @brief signal_ToPhone
     * 转到电话信号
     */
    void signal_ToPhone();
private:
    /**
     * @brief paintEvent
     * @param event
     * 重绘事件,用于绘制背景
     */
    void paintEvent(QPaintEvent* event);
    /**
     * @brief initBottomPushbutton
     * 初始按钮
     */
    void initBottomPushbutton();
private:
    Ui::MFD_Radio *ui;
};

#endif // MFD_RADIO_H

源文件

#include "mfd_radio.h"
#include "ui_mfd_radio.h"
#include <QPainter>
#include <QTabBar>
MFD_Radio::MFD_Radio(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::MFD_Radio)
{
    ui->setupUi(this);
    ui->label_mainback->hide();
    ui->pushButton_menubtn->setStyleSheet("QPushButton{border-image: url(:/Multimedia/Resources/MultifunctionDisplay/Multimedia/menubtn.png);}"
                                          "QPushButton:pressed{border-image: url(:/Multimedia/Resources/MultifunctionDisplay/Multimedia/menubtn_1.png);}");
    initBottomPushbutton();

    ui->tabWidget_menu->tabBar()->hide();
    ui->tabWidget_menu->setStyleSheet("QTabWidget::pane{border-top: 2px solid #00000000;}");
    ui->tabWidget_menu->hide();

    ui->pushButton_am->setStyleSheet("QPushButton{border-image: url(:/Radio/Resources/MultifunctionDisplay/Radio/am.png);}"
                                     "QPushButton:pressed{border-image: url(:/Radio/Resources/MultifunctionDisplay/Radio/am_1.png);}");

    ui->pushButton_fm->setStyleSheet("QPushButton{border-image: url(:/Radio/Resources/MultifunctionDisplay/Radio/fm_2.png);}"
                                     "QPushButton:pressed{border-image: url(:/Radio/Resources/MultifunctionDisplay/Radio/fm_1.png);}");

}

MFD_Radio::~MFD_Radio()
{
    delete ui;
}

void MFD_Radio::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event)
    QPainter painter;
    painter.begin(this);
    painter.drawPixmap(0,0,width(),height(), QPixmap(":/Radio/Resources/MultifunctionDisplay/Radio/mainback.png"));               // 绘制背景
    painter.end();
}

void MFD_Radio::initBottomPushbutton()
{
    ui->pushButton_menu->setStyleSheet("QPushButton{border-image: url(:/Multimedia/Resources/MultifunctionDisplay/Multimedia/menu.png);}"
                                       "QPushButton:pressed{border-image: url(:/Multimedia/Resources/MultifunctionDisplay/Multimedia/menu_1.png);}");

    ui->pushButton_return->setStyleSheet("QPushButton{border-image: url(:/Multimedia/Resources/MultifunctionDisplay/Multimedia/return.png);}"
                                         "QPushButton:pressed{border-image: url(:/Multimedia/Resources/MultifunctionDisplay/Multimedia/return_1.png);}");

    ui->pushButton_multimedia->setStyleSheet("QPushButton{border-image: url(:/Multimedia/Resources/MultifunctionDisplay/Multimedia/multimedia_2.png);}"
                                             "QPushButton:pressed{border-image: url(:/Multimedia/Resources/MultifunctionDisplay/Multimedia/multimedia_1.png);}");

    ui->pushButton_navigation->setStyleSheet("QPushButton{border-image: url(:/Multimedia/Resources/MultifunctionDisplay/Multimedia/navigation_2.png);}"
                                             "QPushButton:pressed{border-image: url(:/Multimedia/Resources/MultifunctionDisplay/Multimedia/navigation_1.png);}");

    ui->pushButton_radio->setStyleSheet("QPushButton{border-image: url(:/Multimedia/Resources/MultifunctionDisplay/Multimedia/radio.png);}"
                                        "QPushButton:pressed{border-image: url(:/Multimedia/Resources/MultifunctionDisplay/Multimedia/radio_1.png);}");

    ui->pushButton_phone->setStyleSheet("QPushButton{border-image: url(:/Multimedia/Resources/MultifunctionDisplay/Multimedia/phone_2.png);}"
                                        "QPushButton:pressed{border-image: url(:/Multimedia/Resources/MultifunctionDisplay/Multimedia/phone_1.png);}");
}

void MFD_Radio::on_pushButton_menu_clicked()
{

    emit signal_returnToMenu();

}


void MFD_Radio::on_pushButton_navigation_clicked()
{
    emit signal_ToNavigation();
}


void MFD_Radio::on_pushButton_multimedia_clicked()
{
    emit signal_ToMusic();
}


void MFD_Radio::on_pushButton_radio_clicked()
{

}


void MFD_Radio::on_pushButton_phone_clicked()
{
    emit signal_ToPhone();
}


void MFD_Radio::on_pushButton_return_clicked()
{
    emit signal_return();
}


void MFD_Radio::on_pushButton_menubtn_clicked()
{
    if(ui->tabWidget_menu->isHidden())
    {
        ui->tabWidget_menu->show();
        ui->tabWidget_menu->setCurrentIndex(0);
    }
    else
        ui->tabWidget_menu->hide();
}


void MFD_Radio::on_pushButton_am_clicked()
{
    ui->pushButton_am->setStyleSheet("QPushButton{border-image: url(:/Radio/Resources/MultifunctionDisplay/Radio/am.png);}"
                                     "QPushButton:pressed{border-image: url(:/Radio/Resources/MultifunctionDisplay/Radio/am_1.png);}");

    ui->pushButton_fm->setStyleSheet("QPushButton{border-image: url(:/Radio/Resources/MultifunctionDisplay/Radio/fm_2.png);}"
                                     "QPushButton:pressed{border-image: url(:/Radio/Resources/MultifunctionDisplay/Radio/fm_1.png);}");
}


void MFD_Radio::on_pushButton_fm_clicked()
{
    ui->pushButton_am->setStyleSheet("QPushButton{border-image: url(:/Radio/Resources/MultifunctionDisplay/Radio/am_2.png);}"
                                     "QPushButton:pressed{border-image: url(:/Radio/Resources/MultifunctionDisplay/Radio/am_1.png);}");

    ui->pushButton_fm->setStyleSheet("QPushButton{border-image: url(:/Radio/Resources/MultifunctionDisplay/Radio/fm.png);}"
                                     "QPushButton:pressed{border-image: url(:/Radio/Resources/MultifunctionDisplay/Radio/fm_1.png);}");
}

今天就到这里了。

第三阶段成果展示

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

[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

相关文章
|
机器学习/深度学习 自然语言处理 机器人
【RAG实践】基于LlamaIndex和Qwen1.5搭建基于本地知识库的问答机器人
LLM会产生误导性的 “幻觉”,依赖的信息可能过时,处理特定知识时效率不高,缺乏专业领域的深度洞察,同时在推理能力上也有所欠缺。
|
API
最新!中国天气网api接口调用,key获取方式,数据请求秘钥获取,城市id获取方法
最新!中国天气网api接口调用,key获取方式,数据请求秘钥获取,城市id获取方法
6900 1
最新!中国天气网api接口调用,key获取方式,数据请求秘钥获取,城市id获取方法
|
消息中间件 存储 中间件
【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
12317 1
|
Linux 开发工具 Android开发
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
ijkplayer是由Bilibili基于FFmpeg3.4研发并开源的播放器,适用于Android和iOS,支持本地视频及网络流媒体播放。本文详细介绍如何在新版Android Studio中导入并使用ijkplayer库,包括Gradle版本及配置更新、导入编译好的so文件以及添加直播链接播放代码等步骤,帮助开发者顺利进行App调试与开发。更多FFmpeg开发知识可参考《FFmpeg开发实战:从零基础到短视频上线》。
1327 2
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
|
编解码 JavaScript 前端开发
使用 MediaSource 规范实现自适应流播放
【10月更文挑战第26天】通过以上步骤,就可以使用MediaSource规范实现自适应流播放,根据网络状况动态地调整播放的码率,为用户提供更流畅的观看体验。需要注意的是,实际应用中还需要处理更多的细节和错误情况,以确保播放的稳定性和可靠性。
|
Java 数据库连接 mybatis
Mybatis使用注解方式实现批量更新、批量新增
Mybatis使用注解方式实现批量更新、批量新增
894 1
R语言错误处理与调试:如何高效调试R代码
【8月更文挑战第28天】调试R代码是一项需要不断练习和提高的技能。通过理解常见的错误类型、使用`traceback()`查看错误路径、逐步执行代码、利用`tryCatch()`捕获和处理错误、设置更严格的警告级别、利用RStudio的调试工具以及编写可复现的示例,你可以更加高效地调试R代码,并快速解决遇到的问题。
1065 3
|
SQL 关系型数据库 Go
Golang ORM框架介绍及比较
Golang ORM框架介绍及比较
|
C语言
优化后的代码,
优化后的代码,
247 1
|
监控 Linux 应用服务中间件
linux php-fpm优化 php-fpm.conf 重要参数详解
linux php-fpm优化 php-fpm.conf 重要参数详解
247 0