1.成果展示:



2.界面操作提示

1.  2种方法把歌曲加入列表, 第一种加入本地资源,第二种 加入网上搜索的歌曲 

2.  加入本地资源,点击图片  +  ,然后再本地资源里面添加歌曲

3.  网上搜索有两种方法,第一个是 直接点击, 开始识别,等按钮的文字变为停止识别之后就可以说话,说完之后,点击停止识别,就会出现搜索到的音乐, 

4. 第二种方法 , 在第一个输入框里面,填入歌曲的名字,点击搜索按钮, 


3.代码解析

 1.都有解释

2.主要看 百度云的语音识别。 这个在这里面有 : QT 系统学习 day06 ,摄像头,语音识别(语音转文字,文字转语音,Qt 的人脸识别系统),__She001的博客-CSDN博客


4.所有的代码:

pro.文件

头文件

#ifndef PLAYER_H
#define PLAYER_H

#include <QMainWindow>
/***** 多媒体音视频播放类 ****/
#include <QMediaPlayer> /*** 多媒体播放类 ***/
#include <QMediaPlaylist>/*** 多媒体播放列表类 ***/
/***** 对话框相关类 *****/
#include <QFileDialog> /** 文件对话框 ***/


/********** 网络相关 *********/
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
/********** JSON相关 *********/
#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonObject>
#include <QJsonValue>
/********** 多媒体相关类 ********/
#include <QMediaPlayer>
/******** 音频相关类 *********/
#include <QAudioDeviceInfo> //音频属性类
#include <QAudioFormat> //音频参数
#include <QAudioInput>  //音频输入
#include <QAudioOutput> //音频输出
/******** 文件相关类 **********/
#include <QFile>
/******** 文字转语音类 ********/
#include <QTextToSpeech>

QT_BEGIN_NAMESPACE
namespace Ui { class Player; }
QT_END_NAMESPACE

class Player : public QMainWindow
{
    Q_OBJECT

public:
    Player(QWidget *parent = nullptr);
    ~Player();
public:
    void Media_Init();
private:
    Ui::Player *ui;
    QMediaPlayer *MediaPlayer; /*** 多媒体播放类 ***/
    QMediaPlaylist *MediaPlaylist; /*** 多媒体播放列表类 ***/
    QString time1; //当前时长
    QString time2; //总时长


    QNetworkAccessManager *m_http_Netease; //对接网易云的http

    QMediaPlayer *m_Player;
    int m_musicId = -1;

    QNetworkAccessManager *m_http_baidu_audio; //对接百度语音
    /***** 百度人脸库秘钥 ****/
    QString AppID = "自己加";
    QString API_Key = "自己加";
    QString Secret_Key = "自己加";
    QString access_token = "";

    /***** 音频相关 ******/
    QAudioInput *m_AudioInput;
    QFile *m_file;

public slots:
    void slot_pushButton_add();
    void slot_comboBox_rate(QString text);
    void slot_MediaPlaylist(int index);
    void slot_pushButton_delete();
    /***** 进度相关槽函数 *****/
    void slot_MediaPlayer_durationChanged(qint64 dura); //总时长发生改变对接该槽函数
    void slot_MediaPlayer_positionChanged(qint64 posi); //进度时间改变
    void slot_horizontalSlider_progress(int value); //进度滑块值改变对接该槽函数
    /***** 声音相关槽函数 *****/
    void slot_checkBox_volume(bool ok);
    void slot_discern();
    void slot_http_Netease_finished(QNetworkReply*);
    void slot_http_baidu_audio_finished(QNetworkReply *Reply);
    void slot_pushButton_Text();




private slots:
    void on_pushButton_input_3_clicked();
    void on_pushButton_Text_3_clicked();
    void on_pushButton_play_4_clicked();

};
#endif // PLAYER_H

.cpp 文件

#include "player.h"
#include "ui_player.h"

Player::Player(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::Player)
{
    ui->setupUi(this);
    /**** 申请多媒体播放类空间 ****/
    MediaPlayer = new QMediaPlayer(this);//音乐播放器
    MediaPlaylist = new QMediaPlaylist(this);//播放队列


    /**** 将播放列表设置到播放器中 ****/
    MediaPlayer->setPlaylist(MediaPlaylist);


    /**** 将自带的音乐文件资源添加到播放器 ****/

    /**** 初始化音乐播放器 ******/
    MediaPlayer->setVolume(ui->horizontalSlider_volume->value()); //初始化音量为UI界面的音量


    /**** 将Paly播放器数据输出到UI ,需要解码器的支持 *****/
    MediaPlayer->setVideoOutput(ui->VideoWidget);
    MediaPlaylist->setPlaybackMode(QMediaPlaylist::Loop);// 通过设置 播放列表循环 实现循环播放

    /**** 信号槽操作播放列表 *****/
    connect(ui->pushButton_add,SIGNAL(clicked(bool)),this,SLOT(slot_pushButton_add()));//歌曲添加本地资源按钮
    connect(ui->pushButton_delete,SIGNAL(clicked(bool)),this,SLOT(slot_pushButton_delete()));//播放列表删除按钮的 信号连接



    /**** 信号槽操作播放器 *******/
    connect(ui->pushButton_play,SIGNAL(clicked(bool)),MediaPlayer,SLOT(play()));//开始播放按钮
    connect(ui->pushButton_pause,SIGNAL(clicked(bool)),MediaPlayer,SLOT(pause()));//暂停按钮
    connect(ui->pushButton_stop,SIGNAL(clicked(bool)),MediaPlayer,SLOT(stop()));//停止按钮
    connect(ui->pushButton_next,SIGNAL(clicked(bool)),MediaPlaylist,SLOT(next()));//下一首按钮
    connect(ui->pushButton_previous,SIGNAL(clicked(bool)),MediaPlaylist,SLOT(previous()));//上一首按钮

    connect(ui->horizontalSlider_volume,SIGNAL(valueChanged(int)),MediaPlayer,SLOT(setVolume(int)));//音乐进度条改变的 信号
    connect(ui->comboBox_rate,SIGNAL(currentTextChanged(QString)),this,SLOT(slot_comboBox_rate(QString)));//倍速改变的 此你好连接
    connect(MediaPlaylist,SIGNAL(currentIndexChanged(int)),this,SLOT(slot_MediaPlaylist(int)));//音乐歌曲播放列表的改变

    connect(ui->listWidget,SIGNAL(currentRowChanged(int)),MediaPlaylist,SLOT(setCurrentIndex(int)));//显示的列表发生改变

    /************ 进度相关信号槽功能 *************/
    connect(MediaPlayer,SIGNAL(durationChanged(qint64)),this,SLOT(slot_MediaPlayer_durationChanged(qint64)));//歌曲总时长的改变
    connect(ui->horizontalSlider_progress,SIGNAL(valueChanged(int)),this,SLOT(slot_horizontalSlider_progress(int)));//播放歌曲的进度的改变
    connect(MediaPlayer,SIGNAL(positionChanged(qint64)),this,SLOT(slot_MediaPlayer_positionChanged(qint64)));//播放歌曲的现在的时长的改变
    /************ 声音按钮信号槽 ******************/
    connect(ui->checkBox_volume,SIGNAL(clicked(bool)),this,SLOT(slot_checkBox_volume(bool)));//播放声音的改变

#if 0 //单文件
    MediaPlayer->setMedia(QMediaContent(QUrl("qrc:/音乐歌曲素材/噪 - 印度神曲Nijamena.mp3")));
    MediaPlayer->play(); /*** 播放 ***/
#endif

     m_http_Netease = new QNetworkAccessManager(this);
     connect(m_http_Netease,SIGNAL(finished(QNetworkReply*)),this,SLOT(slot_http_Netease_finished(QNetworkReply*)));
     /****** 配置音频参数 ******/
     QAudioFormat format;
     format.setSampleRate(16000);	//设置采样率:16000MHz
     format.setChannelCount(1);		//设置采集通道数:1通道
     format.setSampleSize(16);		//设置样本大小:16比特
     format.setCodec("audio/pcm");	//设置录音格式为:pcm格式

     QAudioDeviceInfo info = QAudioDeviceInfo::defaultInputDevice(); /** 使用默认输入 ***/
     if(info.isFormatSupported(format) == false)	//检测配置是否支持该音频设备
     {
         format = info.nearestFormat(format);	//只用最接近配置的音频配置
     }
     /****** 申请音频空间 *****/
     m_AudioInput = new QAudioInput(format,this);
     /****** HTTP网络访问类初始化 *****/
     m_http_baidu_audio = new QNetworkAccessManager(this);

     connect(m_http_baidu_audio,SIGNAL(finished(QNetworkReply*)),this,SLOT(slot_http_baidu_audio_finished(QNetworkReply*)));
     QString url("https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=%1&client_secret=%2&");
     url = url.arg(API_Key,Secret_Key);
     m_http_baidu_audio->get(QNetworkRequest(QUrl(url))); //获取 access_token

}


/************ 处理HTTP 请求的返回值 **************/
void Player::slot_http_Netease_finished(QNetworkReply *Reply)//处理网易音乐的 网络的返回信息
{
    QByteArray data = Reply->readAll();
    m_musicId = -1;
    /********* 将数据转换 ***************/
    QJsonObject JsonObject = QJsonDocument::fromJson(data).object();

    /********* 将数据输出到 UI 控件中 ***********/
    ui->textEdit->setText(QJsonDocument::fromJson(data).toJson());
    /********* 将获取ID ***************/
    if(JsonObject.find("result") != JsonObject.end())
    {
        JsonObject = JsonObject["result"].toObject();
        JsonObject = JsonObject["songs"].toArray()[0].toObject();

        m_musicId = JsonObject["id"].toInt();
        ui->lineEdit_id_3->setText(JsonObject["name"].toString() + ":" + QString::number(m_musicId));
    }
}

void Player::slot_http_baidu_audio_finished(QNetworkReply *Reply)//百度云语音识别的的网络回应 接收函数, 判断是否接收成功, 而且返回语音识别的结果
{
    // 响应的状态码为 200 , 表示请求成功
    int stat = Reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();

    QByteArray Reply_data = Reply->readAll();
    qDebug() << QJsonDocument::fromJson(Reply_data).toJson() << endl;
    if(stat == 200) /*** 成功数据 ***/
    {
        //获取响应信息
        QByteArray byteArray = QString(Reply_data).toUtf8();
        QJsonDocument JsonDocument = QJsonDocument::fromJson(byteArray); //转为JSON格式字符串
        if(JsonDocument.isObject() == true)
        {
            QJsonObject JsonObject = JsonDocument.object();
            if(JsonObject.find("access_token") != JsonObject.end())
            {
                access_token = JsonObject["access_token"].toString();
                qDebug() << "access_token:" << access_token << endl;
            }
                qDebug()<<"dasda";
            if(JsonObject.find("err_msg") != JsonObject.end() && JsonObject.find("result") != JsonObject.end())
            {
                QJsonArray JsonArray = JsonObject["result"].toArray();
                QString result = JsonArray[0].toString();
                /***** 判断结果 *****/
                ui->lineEdit_3->setText(result);
                slot_pushButton_Text();
            }
        }
    }
}

void Player::slot_pushButton_Text()//语音识别之后,我们按下这个按键,之后向网易云发送请求,查询歌曲
{
    QString s;
    QString str;
    s = ui->lineEdit_3->text();
    str = "http://music.163.com/api/search/get/web?csrf_token=hlpretag=&hlposttag=&s={"+s+"}&type=1&offset=0&total=true&limit=1";//接入网易云API并且传入需要搜索的数据和返回的数量
    QNetworkRequest request(str);          //定义一个请求对象
    m_http_Netease->get(request); /*** 发送音乐搜索请求 ***/

}

void Player::slot_horizontalSlider_progress(int value)//设置播放进度条  使用connect  连接函数  播放时间变化的方法触发 进度条的变化
{
    if(ui->horizontalSlider_progress->isSliderDown() == true)
    {
        MediaPlayer->setPosition(value);
    }
}

void Player::slot_checkBox_volume(bool ok)//声音的选中框的 的功能, 实现 静音操作
{
    MediaPlayer->setMuted(ok);
    if(ok == true)
    {
        ui->checkBox_volume->setIcon(QIcon(":/音乐播放器图片素材/jingyin.png")); //静音
    }
    else
    {
        ui->checkBox_volume->setIcon(QIcon(":/音乐播放器图片素材/shengyin.png")); //开声音
    }
}

/******** 时间转换函数 *******/
void time_cycle(QString &time,qint64 msec)
{
    /**** 计算总时间 ****/
    int seconds = msec / 1000; //秒钟
    int minute = seconds / 60; //分钟
    int hour = minute / 60 % 24; //小时

    if(hour == 0)
    {
        time = QString::number(minute%60) + ":" + QString::number(seconds%60);
    }
    else
    {
        time = QString::number(hour%24) + ":" + QString::number(minute%60) + ":" + QString::number(seconds%60);
    }
}

void Player::slot_MediaPlayer_durationChanged(qint64 dura)//歌曲总时长的计算
{
    ui->horizontalSlider_progress->setMaximum(dura);
    time_cycle(time2,dura); /** 调用时间转换算法 函数**/
    ui->label_ratio->setText(time1 + "/" + time2);

    ui->label_name->setText(ui->listWidget->currentItem()->text());
}

void Player::slot_MediaPlayer_positionChanged(qint64 posi)//歌曲当前播放的事件
{
    ui->horizontalSlider_progress->setValue(posi);
    time_cycle(time1,posi); /** 调用时间转换算法 函数**/
    ui->label_ratio->setText(time1 + "/" + time2);
}

void Player::slot_pushButton_delete()//删除显示列表,与播放列表里面的东西
{
    int row = ui->listWidget->currentRow();
    delete ui->listWidget->takeItem(row);
    MediaPlaylist->removeMedia(row);
}

void Player::slot_MediaPlaylist(int index)//列表添加音乐的背景 就是选中的状态
{
    int row = index;
    ui->listWidget->setCurrentRow(row);
}

void Player::slot_comboBox_rate(QString text) //调节音乐的速度
{
    float rate = text.toFloat();
    MediaPlayer->setPlaybackRate(rate);
}

void Player::Media_Init()//添加的本地资源初始化
{
    {
        QUrl url("qrc:/音乐歌曲素材/噪 - 印度神曲Nijamena.mp3");
        ui->listWidget->addItem(url.fileName()); //将文件名添加到 ListWidget 的UI控件显示
        MediaPlaylist->addMedia(QMediaContent(url)); //将文件添加到里面
    }
    {
        QUrl url("qrc:/音乐歌曲素材/果冻 - 成功没有退路.mp3");
        ui->listWidget->addItem(url.fileName()); //将文件名添加到 ListWidget 的UI控件显示
        MediaPlaylist->addMedia(QMediaContent(url)); //将文件添加到里面
    }
    {
        QUrl url("qrc:/音乐歌曲素材/蒋蒋 _ 朱贺 - 爱德华的小说.mp3");
        ui->listWidget->addItem(url.fileName()); //将文件名添加到 ListWidget 的UI控件显示
        MediaPlaylist->addMedia(QMediaContent(url)); //将文件添加到里面
    }
}

void Player::slot_pushButton_add()//本来的音乐添加资源
{
    QList<QUrl> file_Urls = QFileDialog::getOpenFileUrls(this,"添加音乐",QUrl("C:\\Users\\Administrator\\Music"),
                                 "音乐 (*.mp3 *.WAV) ;;视频 (*.mp4 *.avi) ;;所有文件 (*.*)");
    for(int i = 0; i < file_Urls.size() ; i++)
    {
        ui->listWidget->addItem(file_Urls[i].fileName()); //将文件名添加到 ListWidget 的UI控件显示
        MediaPlaylist->addMedia(QMediaContent(file_Urls[i])); //将文件添加到里面
    }
}

Player::~Player()//析构函数
{
    delete ui;
}

void Player::slot_discern()//语音识别 发送请求
{
    /***** 读取音频文件 *****/
    m_file = new QFile("./录音.wav");
    m_file->open(QIODevice::ReadWrite);
    if(m_file->isOpen() == false){ //打开失败
        delete m_file;
        return ;
    }

    QByteArray requestData = m_file->readAll(); //读取文件所有内容
    m_file->close();;;;;
    QString buf = requestData.toBase64(); //转码 BASE 64
    /****** 组装网址 **************/
    QUrl url("http://vop.baidu.com/server_api");
    /****** 组装JSON *************/
    QJsonObject json;
    json["format"] = "pcm";
    json["rate"] = 16000;
    json["dev_pid"] = 1537;
    json["channel"] = 1;
    json["token"] = access_token;
    json["cuid"] = "q12993";
    json["len"] = requestData.size(); //语音文字真是的byte长度
    json["speech"] = buf;

    /****** 设置头部 **********/
    QNetworkRequest Request(url);
    Request.setHeader(QNetworkRequest::ContentTypeHeader,"application/json");

    QByteArray send_json = QJsonDocument(json).toJson();
    m_http_baidu_audio->post(Request,send_json);

}

void Player::on_pushButton_input_3_clicked()//语音识别 的按键操作, 设置按键的名字
{
    if(ui->pushButton_input_3->text() == "开始识别")
    {
        m_file = new QFile("./录音.wav");
        m_file->open(QIODevice::ReadWrite | QIODevice::Truncate);
        if(m_file->isOpen() == false){ //打开失败
            delete m_file;
            return ;
        }
        m_AudioInput->start(m_file);

        ui->pushButton_input_3->setText("停止识别");
    }
    else if(ui->pushButton_input_3->text() == "停止识别")
    {
        m_AudioInput->stop();//关闭录制
        m_file->close(); //关闭文件
        ui->pushButton_input_3->setText("开始识别");
        slot_discern(); /** 将语音上传百度云识别 **/
    }
}

void Player::on_pushButton_Text_3_clicked()//搜索  音乐网上搜索
{
    QString s;
    QString str;
    s = ui->lineEdit_3->text();//输入框的内容
    str = "http://music.163.com/api/search/get/web?csrf_token=hlpretag=&hlposttag=&s={"+s+"}&type=1&offset=0&total=true&limit=1";//接入网易云API并且传入需要搜索的数据和返回的数量
    QNetworkRequest request(str);          //定义一个请求对象
    m_http_Netease->get(request); /*** 发送音乐搜索请求 ***/
}

void Player::on_pushButton_play_4_clicked()//播放语音
{
    if(m_musicId == -1) return ;
    QString url;
    url=QString("https://music.163.com/song/media/outer/url?id=%1").arg(QString::number(m_musicId));//通过网网易云API传入之前返回的歌曲的ID实现播放
    qDebug() << "请求语音链接:" << url << endl;
    /***** 通过网络方式获取网易云的音乐链接 *******/
//    m_Player->setMedia(QUrl(url)); //添加一音乐到播放列表中
//    m_Player->play(); //播放

    QString kkk=ui->lineEdit_id_3->text();
    if(kkk!="")
    {
        kkk=kkk.left(kkk.lastIndexOf(":"));
        ui->listWidget->addItem(kkk); //将文件名添加到 ListWidget 的UI控件显示
        MediaPlaylist->addMedia(QMediaContent(url)); //将文件添加到里面
    }

}

mian.cpp

#include "player.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Player w;
    w.show();
    return a.exec();
}

ui 设计界面

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Player</class>
 <widget class="QMainWindow" name="Player">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>940</width>
    <height>799</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>音视频播放器</string>
  </property>
  <property name="windowIcon">
   <iconset resource="res.qrc">
    <normaloff>:/音乐播放器图片素材/bofangqi_1.png</normaloff>:/音乐播放器图片素材/bofangqi_1.png</iconset>
  </property>
  <widget class="QWidget" name="centralwidget">
   <layout class="QVBoxLayout" name="verticalLayout_4">
    <item>
     <widget class="QSplitter" name="splitter">
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
      </property>
      <widget class="QGroupBox" name="groupBox">
       <property name="title">
        <string>播放列表</string>
       </property>
       <layout class="QVBoxLayout" name="verticalLayout">
        <item>
         <layout class="QHBoxLayout" name="horizontalLayout">
          <item>
           <widget class="QPushButton" name="pushButton_add">
            <property name="text">
             <string/>
            </property>
            <property name="icon">
             <iconset resource="res.qrc">
              <normaloff>:/音乐播放器图片素材/biaoqing.png</normaloff>:/音乐播放器图片素材/biaoqing.png</iconset>
            </property>
            <property name="iconSize">
             <size>
              <width>48</width>
              <height>48</height>
             </size>
            </property>
           </widget>
          </item>
          <item>
           <widget class="QPushButton" name="pushButton_delete">
            <property name="text">
             <string/>
            </property>
            <property name="icon">
             <iconset resource="res.qrc">
              <normaloff>:/音乐播放器图片素材/shanchu.png</normaloff>:/音乐播放器图片素材/shanchu.png</iconset>
            </property>
            <property name="iconSize">
             <size>
              <width>48</width>
              <height>48</height>
             </size>
            </property>
           </widget>
          </item>
          <item>
           <widget class="QPushButton" name="pushButton_clear">
            <property name="text">
             <string/>
            </property>
            <property name="icon">
             <iconset resource="res.qrc">
              <normaloff>:/音乐播放器图片素材/qingkong.png</normaloff>:/音乐播放器图片素材/qingkong.png</iconset>
            </property>
            <property name="iconSize">
             <size>
              <width>48</width>
              <height>48</height>
             </size>
            </property>
           </widget>
          </item>
         </layout>
        </item>
        <item>
         <widget class="QListWidget" name="listWidget"/>
        </item>
       </layout>
      </widget>
      <widget class="QFrame" name="frame">
       <property name="frameShape">
        <enum>QFrame::StyledPanel</enum>
       </property>
       <property name="frameShadow">
        <enum>QFrame::Raised</enum>
       </property>
       <property name="lineWidth">
        <number>1</number>
       </property>
       <layout class="QVBoxLayout" name="verticalLayout_5">
        <item>
         <widget class="QSplitter" name="splitter_2">
          <property name="orientation">
           <enum>Qt::Vertical</enum>
          </property>
          <widget class="QVideoWidget" name="VideoWidget" native="true">
           <property name="minimumSize">
            <size>
             <width>0</width>
             <height>400</height>
            </size>
           </property>
           <widget class="QWidget" name="widget_2" native="true">
            <property name="geometry">
             <rect>
              <x>10</x>
              <y>10</y>
              <width>541</width>
              <height>361</height>
             </rect>
            </property>
            <layout class="QVBoxLayout" name="verticalLayout_6">
             <item>
              <layout class="QHBoxLayout" name="horizontalLayout_12">
               <item>
                <widget class="QLineEdit" name="lineEdit_3">
                 <property name="placeholderText">
                  <string>请输入要搜索的歌曲</string>
                 </property>
                </widget>
               </item>
               <item>
                <widget class="QPushButton" name="pushButton_input_3">
                 <property name="text">
                  <string>开始识别</string>
                 </property>
                </widget>
               </item>
               <item>
                <widget class="QPushButton" name="pushButton_Text_3">
                 <property name="text">
                  <string>搜索</string>
                 </property>
                </widget>
               </item>
              </layout>
             </item>
             <item>
              <layout class="QHBoxLayout" name="horizontalLayout_11">
               <item>
                <widget class="QLineEdit" name="lineEdit_id_3"/>
               </item>
               <item>
                <widget class="QPushButton" name="pushButton_play_4">
                 <property name="text">
                  <string>加入列表</string>
                 </property>
                </widget>
               </item>
              </layout>
             </item>
             <item>
              <widget class="QTextEdit" name="textEdit"/>
             </item>
            </layout>
           </widget>
          </widget>
          <widget class="QWidget" name="widget" native="true">
           <layout class="QVBoxLayout" name="verticalLayout_3">
            <item>
             <widget class="QGroupBox" name="groupBox_2">
              <property name="title">
               <string>播放操作</string>
              </property>
              <layout class="QVBoxLayout" name="verticalLayout_2">
               <item>
                <layout class="QHBoxLayout" name="horizontalLayout_4">
                 <item>
                  <layout class="QHBoxLayout" name="horizontalLayout_2">
                   <item>
                    <widget class="QPushButton" name="pushButton_play">
                     <property name="text">
                      <string/>
                     </property>
                     <property name="icon">
                      <iconset resource="res.qrc">
                       <normaloff>:/音乐播放器图片素材/bofang.png</normaloff>:/音乐播放器图片素材/bofang.png</iconset>
                     </property>
                     <property name="iconSize">
                      <size>
                       <width>24</width>
                       <height>24</height>
                      </size>
                     </property>
                    </widget>
                   </item>
                   <item>
                    <widget class="QPushButton" name="pushButton_pause">
                     <property name="text">
                      <string/>
                     </property>
                     <property name="icon">
                      <iconset resource="res.qrc">
                       <normaloff>:/音乐播放器图片素材/zanting.png</normaloff>:/音乐播放器图片素材/zanting.png</iconset>
                     </property>
                     <property name="iconSize">
                      <size>
                       <width>24</width>
                       <height>24</height>
                      </size>
                     </property>
                    </widget>
                   </item>
                   <item>
                    <widget class="QPushButton" name="pushButton_stop">
                     <property name="text">
                      <string/>
                     </property>
                     <property name="icon">
                      <iconset resource="res.qrc">
                       <normaloff>:/音乐播放器图片素材/tingzhi.png</normaloff>:/音乐播放器图片素材/tingzhi.png</iconset>
                     </property>
                     <property name="iconSize">
                      <size>
                       <width>24</width>
                       <height>24</height>
                      </size>
                     </property>
                    </widget>
                   </item>
                   <item>
                    <widget class="QPushButton" name="pushButton_previous">
                     <property name="text">
                      <string/>
                     </property>
                     <property name="icon">
                      <iconset resource="res.qrc">
                       <normaloff>:/音乐播放器图片素材/shangyiqu.png</normaloff>:/音乐播放器图片素材/shangyiqu.png</iconset>
                     </property>
                     <property name="iconSize">
                      <size>
                       <width>24</width>
                       <height>24</height>
                      </size>
                     </property>
                    </widget>
                   </item>
                   <item>
                    <widget class="QPushButton" name="pushButton_next">
                     <property name="text">
                      <string/>
                     </property>
                     <property name="icon">
                      <iconset resource="res.qrc">
                       <normaloff>:/音乐播放器图片素材/xiayiqu.png</normaloff>:/音乐播放器图片素材/xiayiqu.png</iconset>
                     </property>
                     <property name="iconSize">
                      <size>
                       <width>24</width>
                       <height>24</height>
                      </size>
                     </property>
                    </widget>
                   </item>
                  </layout>
                 </item>
                 <item>
                  <layout class="QHBoxLayout" name="horizontalLayout_3">
                   <item>
                    <spacer name="horizontalSpacer_2">
                     <property name="orientation">
                      <enum>Qt::Horizontal</enum>
                     </property>
                     <property name="sizeHint" stdset="0">
                      <size>
                       <width>40</width>
                       <height>20</height>
                      </size>
                     </property>
                    </spacer>
                   </item>
                   <item>
                    <widget class="QLabel" name="label">
                     <property name="text">
                      <string>倍速x</string>
                     </property>
                    </widget>
                   </item>
                   <item>
                    <widget class="QComboBox" name="comboBox_rate">
                     <item>
                      <property name="text">
                       <string>1</string>
                      </property>
                     </item>
                     <item>
                      <property name="text">
                       <string>2</string>
                      </property>
                     </item>
                     <item>
                      <property name="text">
                       <string>4</string>
                      </property>
                     </item>
                     <item>
                      <property name="text">
                       <string>8</string>
                      </property>
                     </item>
                    </widget>
                   </item>
                   <item>
                    <spacer name="horizontalSpacer_3">
                     <property name="orientation">
                      <enum>Qt::Horizontal</enum>
                     </property>
                     <property name="sizeHint" stdset="0">
                      <size>
                       <width>40</width>
                       <height>20</height>
                      </size>
                     </property>
                    </spacer>
                   </item>
                  </layout>
                 </item>
                </layout>
               </item>
               <item>
                <layout class="QHBoxLayout" name="horizontalLayout_5">
                 <item>
                  <widget class="QCheckBox" name="checkBox_volume">
                   <property name="text">
                    <string>音量</string>
                   </property>
                   <property name="icon">
                    <iconset resource="res.qrc">
                     <normaloff>:/音乐播放器图片素材/shengyin.png</normaloff>:/音乐播放器图片素材/shengyin.png</iconset>
                   </property>
                   <property name="iconSize">
                    <size>
                     <width>24</width>
                     <height>24</height>
                    </size>
                   </property>
                   <property name="checked">
                    <bool>false</bool>
                   </property>
                   <property name="tristate">
                    <bool>false</bool>
                   </property>
                  </widget>
                 </item>
                 <item>
                  <widget class="QSlider" name="horizontalSlider_volume">
                   <property name="maximum">
                    <number>100</number>
                   </property>
                   <property name="value">
                    <number>80</number>
                   </property>
                   <property name="orientation">
                    <enum>Qt::Horizontal</enum>
                   </property>
                  </widget>
                 </item>
                 <item>
                  <spacer name="horizontalSpacer">
                   <property name="orientation">
                    <enum>Qt::Horizontal</enum>
                   </property>
                   <property name="sizeHint" stdset="0">
                    <size>
                     <width>40</width>
                     <height>20</height>
                    </size>
                   </property>
                  </spacer>
                 </item>
                </layout>
               </item>
              </layout>
             </widget>
            </item>
            <item>
             <widget class="QGroupBox" name="groupBox_3">
              <property name="title">
               <string>进度操作</string>
              </property>
              <layout class="QHBoxLayout" name="horizontalLayout_6">
               <item>
                <widget class="QLabel" name="label_name">
                 <property name="minimumSize">
                  <size>
                   <width>140</width>
                   <height>0</height>
                  </size>
                 </property>
                 <property name="text">
                  <string>名字:</string>
                 </property>
                </widget>
               </item>
               <item>
                <widget class="QLabel" name="label_2">
                 <property name="text">
                  <string>进度</string>
                 </property>
                </widget>
               </item>
               <item>
                <widget class="QSlider" name="horizontalSlider_progress">
                 <property name="orientation">
                  <enum>Qt::Horizontal</enum>
                 </property>
                </widget>
               </item>
               <item>
                <widget class="QLabel" name="label_ratio">
                 <property name="text">
                  <string>比例</string>
                 </property>
                </widget>
               </item>
              </layout>
             </widget>
            </item>
           </layout>
          </widget>
         </widget>
        </item>
       </layout>
      </widget>
     </widget>
    </item>
   </layout>
  </widget>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>940</width>
     <height>26</height>
    </rect>
   </property>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <customwidgets>
  <customwidget>
   <class>QVideoWidget</class>
   <extends>QWidget</extends>
   <header>qvideowidget.h</header>
   <container>1</container>
  </customwidget>
 </customwidgets>
 <resources>
  <include location="res.qrc"/>
 </resources>
 <connections/>
</ui>




资源文件已经上传 (图片里面有)

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐