通过QT对madplay的应用,实现音乐播放器的功能,包括开始播放、暂停播放、继续播放、终止播放、播放上一首、播放下一首、添加指定目录下的音乐、删除指定歌曲、清空列表。应用到QFileDialog、QStringList等类,最后可以通过交叉编译移植到开发板上运行。

界面效果如下图:

具体代码如下:
player.h

#ifndef PLAYER_H
#define PLAYER_H#include <QDialog>
#include <QWidget>
#include <QProcess>
#include <QFileDialog>namespace Ui {class player;
}class player : public QDialog
{Q_OBJECTpublic:explicit player(QWidget *parent = 0);~player();private slots:void on_pushButton_close_clicked();void on_pushButton_start_clicked();void on_pushButton_add_clicked();void on_listWidget_itemDoubleClicked();void on_pushButton_stop_clicked();void on_pushButton_prev_clicked();void on_pushButton_next_clicked();void on_pushButton_clear_clicked();void on_pushButton_delete_clicked();void on_pushButton_exit_clicked();private:Ui::player *ui;QProcess *p;QString Music_path;
};#endif // PLAYER_H

player.cpp

#include "player.h"
#include "ui_player.h"
#include <QDebug>player::player(QWidget *parent) :QDialog(parent),ui(new Ui::player)
{ui->setupUi(this);p = new QProcess(this);ui->pushButton_stop->setEnabled(false);                                                                        //失能暂停按钮//    this->setAutoFillBackground(true);                                                                           //自定义背景
//    QPalette palette = this->palette();
//    palette.setBrush(QPalette::Window,QBrush(QPixmap("./background.jpeg").                                       //使用平滑的缩放方式
//                                             scaled(this->size(),Qt::IgnoreAspectRatio,Qt::SmoothTransformation)));
//    this->setPalette(palette);                                                                                   //给widget加上背景图
}player::~player()
{delete ui;p->kill();p->waitForFinished();
}void player::on_pushButton_close_clicked()                                                                         //终止播放
{p->kill();                                                                                                     //关闭播放器p->waitForFinished();                                                                                          //等待关闭ui->pushButton_stop->setEnabled(false);                                                                        //失能暂停按钮
}void player::on_pushButton_start_clicked()
{if(p->state() == QProcess::Running)                                                                            //如果有音乐在播放{on_pushButton_close_clicked();                                                                             //终止播放}QString buf = QString("madplay");QStringList args;Music_path = ui->listWidget->currentItem()->text();                                                            //记录当前播放的音乐args<<Music_path<<"&";p->start(buf,args);                                                                                            //执行QString命令ui->pushButton_stop->setText("暂停");                                                                           //重置暂停按钮ui->pushButton_stop->setEnabled(true);                                                                         //使能暂停按钮
}void player::on_pushButton_add_clicked()                                                                           //添加音乐
{QStringList music_files =  QFileDialog::getOpenFileNames(this,"选择音乐文件","./music","*.mp3 *.WAV");for(int i = 0; i < ui->listWidget->count(); i++)                                                               //去重{for(int j = 0; j < music_files.count(); j++){if(ui->listWidget->item(i)->text() == music_files.at(j)){music_files.removeAt(j);break;}}}ui->listWidget->addItems(music_files);                                                                         //将文件添加到listWidgetui->listWidget->setCurrentRow(0);                                                                              //定位
}void player::on_listWidget_itemDoubleClicked()                                                                     //双击播放音乐
{on_pushButton_start_clicked();
}void player::on_pushButton_stop_clicked()                                                                          //暂停播放、继续播放音乐
{QString buf = QString("killall");QStringList args;if(ui->pushButton_stop->text() == "暂停"){ui->pushButton_stop->setText("继续");args<<"-STOP"<<"madplay";}else{ui->pushButton_stop->setText("暂停");args<<"-CONT"<<"madplay";}p->execute(buf,args);
}void player::on_pushButton_prev_clicked()                                                                          //上一首
{int row = ui->listWidget->currentRow();if(row == 0)row = ui->listWidget->count();row--;ui->listWidget->setCurrentRow(row);p->kill();p->waitForFinished();QString buf = QString("madplay");QStringList args;Music_path = ui->listWidget->currentItem()->text();args<<Music_path<<"&";p->start(buf,args);
}void player::on_pushButton_next_clicked()                                                                          //下一首
{int row = ui->listWidget->currentRow();if(row == ui->listWidget->count()-1)row = 0;elserow++;ui->listWidget->setCurrentRow(row);p->kill();p->waitForFinished();QString buf = QString("madplay");QStringList args;Music_path = ui->listWidget->currentItem()->text();args<<Music_path<<"&";p->start(buf,args);
}void player::on_pushButton_clear_clicked()                                                                         //清空列表
{on_pushButton_close_clicked();ui->listWidget->clear();
}void player::on_pushButton_delete_clicked()                                                                        //删除音乐
{if(ui->listWidget->currentItem()->text() == Music_path){on_pushButton_close_clicked();}int row = ui->listWidget->currentRow();QListWidgetItem *item = ui->listWidget->takeItem(row);if(item){delete item;on_pushButton_start_clicked();}
}void player::on_pushButton_exit_clicked()                                                                          //退出
{on_pushButton_close_clicked();this->close();
}

完整代码:https://download.csdn.net/download/weixin_43793181/20335001

QT设计实现音乐播放器的基本功能相关推荐

  1. 【基于Qt的在线音乐播放器】

    基于Qt的在线音乐播放器 项目功能: 本在线音乐播放器的功能在于创建一个音乐播放器页面,可以实现搜索功能通过HTTP协议获取网络中数据并解析出来,播放搜索到的歌曲并展示相关信息.效果如图: 相关类及功 ...

  2. 基于QT的网络音乐播放器(一)

    自学Qt已经有一段时间了,但是始终感觉自己还是很弱(其实并不是感觉自己很弱,是自己本来就很弱,哈哈).自己也照着书上敲了几个例子,但觉得还是要写点东西才能真正运用起来.所以,前段时间就写了个很简单的音 ...

  3. 树莓派3B qt+mplayer制作音乐播放器(10)

    内容 树莓派3B qt+mplayer制作音乐播放器:播放.暂停.上一曲.下一曲,音量调节. 平台:树莓派+qt+mplayer 1.配置 qt安装见此: https://blog.csdn.net/ ...

  4. 单片机音乐播放器课程设计C语言,单片机课程设计简易音乐播放器

    单片机课程设计简易音乐播放器 论文题目:简易音乐播放器所属系部:电子工程系 指导教师: 学生姓名: 学 号: 专 业: 电子信息工程技术 题目: 简易音乐播放器任务与要求:本设计以 MCS-51 系列 ...

  5. 基于FPGA设计的音乐播放器

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 基于FPGA设计的音乐播放器 一.生成PCM音频格式的音乐文件 1.PCM音频文件格式 2.Matlab读取WAV文件 二. ...

  6. java课程设计-音乐播放器_java课程设计---java音乐播放器.doc

    java课程设计---java音乐播放器 Java程序设计课程设计 题 目 java音乐播放器 学 号: 姓 名: 指导教师: 完成时间: 目 录 第一章 系统概述3 1.需求分析3 1.1任务目的: ...

  7. java课程设计-音乐播放器_Java程序设计课程设计报告音乐播放器

    Java程序设计课程设计报告音乐播放器 <Java及Java web应用开发>实验报告 设计题目: Java音乐播放器 专 业 计算机信息管理 班 级 1班 学 号 姓 名 2014年12 ...

  8. java音乐播放器文库_微机原理课程设计报告——音乐播放器.doc

    微机原理课程设计报告--音乐播放器.doc 微机 应用系统 课程设计报告 题 目 电子音乐播放器 专业班级 电子信息科学与技术 1001 班 设计学生 完成时间 2012 年 6 月 27 日 湖南文 ...

  9. java音乐系统实验报告_java程序设计课程设计报告音乐播放器.docx

    java程序设计课程设计报告音乐播放器.docx JAVA及JAVAWEB应用开发实验报告设计题目JAVA音乐播放器专业计算机信息管理班级1班学号姓名2014年12月24日IMPORTJAVAXMED ...

最新文章

  1. C# Message 消息处理
  2. 【AutoML】如何选择最合适的数据增强操作
  3. 由浅入深:自己动手开发模板引擎——解释型模板引擎(二)
  4. Http benchmarking 工具 wrk 基本使用
  5. 在 Nginx 上支持 HTTP/3
  6. 有关语音识别技术的一些信息点
  7. linux入门生信,优秀学员的学习方法展示
  8. 修改 linux分区文件,修改分区和EXT4文件系统大小
  9. 在哪可以听到施一公教授的课程_为何81%的清华留学生不愿回国?施一公:中国学生有一“通病”...
  10. php 判断是否在线,关于判断用户是否在线的问题!!!
  11. 【HDU1251+POJ2001+POJ3630】单词前缀问题整理
  12. J2EE的体系架构——J2EE
  13. 微信公众号微信支付提示 调用支付JSAPI缺少参数:appId
  14. English--基础知识点--8--半助动词
  15. mysql 定时任务编写
  16. 小小二维码,引领大数据时代,爱码物联一物一码功能解析!
  17. MRTG教程(五):MRTG的配置参考指南
  18. [高通SDM450][Android 9.0] 虹软人脸算法WIFI信息变化导致授权失败
  19. 神策 2019 数据驱动大会,引领大数据行业“矩•变”升级
  20. Vim中如何替换字符串

热门文章

  1. Easyrecovery home15密钥及安装修复硬盘数据教程
  2. 第25课:优化应用程序性能,好钢用在刀刃上
  3. nRF5340(入门篇)之1.3 nRF5340开发平台之NCS入门
  4. unity2——tree树(自带)
  5. Android与RFID的点点滴滴(二)RFID通讯协议
  6. activex控件 新对象 ocx 初始化_VBA代码利用Listview控件来显示你的工作表任务
  7. 60行代码教你解决9*9数独游戏
  8. 03.03:E云管家
  9. oracle加了rownum后就很慢,rownum orderby非常慢
  10. 人人网的崛起——中国局域网的信息集散地