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

相关文章
|
7月前
|
网络架构
海康大华云台摄像机使用ONVIF无法控制云台问题
海康大华云台摄像机使用ONVIF无法控制云台问题
260 1
HMI-59-【多媒体】收音机 2
今天接着搞收音机,今天我们将把控制台的模拟中控旋钮信号引进到收音机里面来,来控制我们收音机调频。
HMI-63-【多媒体】空调部分 4
其实呢,写到这里,如果是第一次点击进来这个系列的文章,那你一定是在想着傻子在干嘛,写的啥玩意,所以呢,我还是建议你看看整个系列[Qt 汽车 HMI 仪表](https://dreamlife.blog.csdn.net/category_9146909_2.html),毕竟写到这里,我有时候会迷糊,尤其是变量命名上,真的不知道以前的规则了,好多时候都是写到差不多了,回去一看,我曹,偏离了以前的风格,于是又花大量的时间去修改变量名,这个项目呢,持续的时间是在太久了,从之前整个`UI`练练手的想法,到现在想把它做成一个完成度较高的`“产品”`它已经已经跟着我走过三家公司了,不是说我工作换的,只是想
HMI-60-【多媒体】空调部分 1
今天我们搞空调的按钮,今天这里我们不会堆砌大量的素材,而是用一个自定义的Button来实现这些,可以看到我们这次的空调按钮有以下元素
HMI-61-【多媒体】空调部分 2
昨天我们已经实现了自定义的按钮了,今天我们把已经定义好的按钮和我们的控制台联动起来,使我们的多媒体部分不仅可以触屏控制,可一个使用控制台的旋钮来控制。演示如下
HMI-62-【多媒体】空调部分 3
今天接着昨天的思路来搞,实现空调数字模块,因为素材里面的空调是双区空调,所以我还是自定义了一个模块,这个实现不难,可以参考上一篇自定义个按钮。
HMI-53-【多媒体】音乐播放器 2
今天我们接着搞我们的音乐播放器,今天我把们昨天剩下的那些布局搞一搞,后面再实现细节,今天我们把下面的菜单和逻辑实现了,以及上次漏掉的右上角的子菜单按钮。
HMI-56-【多媒体】音乐播放器 5
上一篇中实现了音乐播放的后台线程,夜里睡觉也没有睡踏实,总是感觉不合适,所以今天还是决定重新搞一下。
HMI-52-【多媒体】音乐播放器 1
今天我们搞音乐播放器,哎嗨,这个东西要是往细碎了搞,事情还真不少,今天就先努力实现面上的内容。
HMI-54-【多媒体】音乐播放器 3
今天我们接着搞音乐播放器,今天我们实现这个中心的音乐播放器。也就是这个歌曲信息,上一曲下一曲暂停,播放进度啥的。