QT设计实现音乐播放器的基本功能
通过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设计实现音乐播放器的基本功能相关推荐
- 【基于Qt的在线音乐播放器】
基于Qt的在线音乐播放器 项目功能: 本在线音乐播放器的功能在于创建一个音乐播放器页面,可以实现搜索功能通过HTTP协议获取网络中数据并解析出来,播放搜索到的歌曲并展示相关信息.效果如图: 相关类及功 ...
- 基于QT的网络音乐播放器(一)
自学Qt已经有一段时间了,但是始终感觉自己还是很弱(其实并不是感觉自己很弱,是自己本来就很弱,哈哈).自己也照着书上敲了几个例子,但觉得还是要写点东西才能真正运用起来.所以,前段时间就写了个很简单的音 ...
- 树莓派3B qt+mplayer制作音乐播放器(10)
内容 树莓派3B qt+mplayer制作音乐播放器:播放.暂停.上一曲.下一曲,音量调节. 平台:树莓派+qt+mplayer 1.配置 qt安装见此: https://blog.csdn.net/ ...
- 单片机音乐播放器课程设计C语言,单片机课程设计简易音乐播放器
单片机课程设计简易音乐播放器 论文题目:简易音乐播放器所属系部:电子工程系 指导教师: 学生姓名: 学 号: 专 业: 电子信息工程技术 题目: 简易音乐播放器任务与要求:本设计以 MCS-51 系列 ...
- 基于FPGA设计的音乐播放器
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 基于FPGA设计的音乐播放器 一.生成PCM音频格式的音乐文件 1.PCM音频文件格式 2.Matlab读取WAV文件 二. ...
- java课程设计-音乐播放器_java课程设计---java音乐播放器.doc
java课程设计---java音乐播放器 Java程序设计课程设计 题 目 java音乐播放器 学 号: 姓 名: 指导教师: 完成时间: 目 录 第一章 系统概述3 1.需求分析3 1.1任务目的: ...
- java课程设计-音乐播放器_Java程序设计课程设计报告音乐播放器
Java程序设计课程设计报告音乐播放器 <Java及Java web应用开发>实验报告 设计题目: Java音乐播放器 专 业 计算机信息管理 班 级 1班 学 号 姓 名 2014年12 ...
- java音乐播放器文库_微机原理课程设计报告——音乐播放器.doc
微机原理课程设计报告--音乐播放器.doc 微机 应用系统 课程设计报告 题 目 电子音乐播放器 专业班级 电子信息科学与技术 1001 班 设计学生 完成时间 2012 年 6 月 27 日 湖南文 ...
- java音乐系统实验报告_java程序设计课程设计报告音乐播放器.docx
java程序设计课程设计报告音乐播放器.docx JAVA及JAVAWEB应用开发实验报告设计题目JAVA音乐播放器专业计算机信息管理班级1班学号姓名2014年12月24日IMPORTJAVAXMED ...
最新文章
- C# Message 消息处理
- 【AutoML】如何选择最合适的数据增强操作
- 由浅入深:自己动手开发模板引擎——解释型模板引擎(二)
- Http benchmarking 工具 wrk 基本使用
- 在 Nginx 上支持 HTTP/3
- 有关语音识别技术的一些信息点
- linux入门生信,优秀学员的学习方法展示
- 修改 linux分区文件,修改分区和EXT4文件系统大小
- 在哪可以听到施一公教授的课程_为何81%的清华留学生不愿回国?施一公:中国学生有一“通病”...
- php 判断是否在线,关于判断用户是否在线的问题!!!
- 【HDU1251+POJ2001+POJ3630】单词前缀问题整理
- J2EE的体系架构——J2EE
- 微信公众号微信支付提示 调用支付JSAPI缺少参数:appId
- English--基础知识点--8--半助动词
- mysql 定时任务编写
- 小小二维码,引领大数据时代,爱码物联一物一码功能解析!
- MRTG教程(五):MRTG的配置参考指南
- [高通SDM450][Android 9.0] 虹软人脸算法WIFI信息变化导致授权失败
- 神策 2019 数据驱动大会,引领大数据行业“矩•变”升级
- Vim中如何替换字符串
热门文章
- Easyrecovery home15密钥及安装修复硬盘数据教程
- 第25课:优化应用程序性能,好钢用在刀刃上
- nRF5340(入门篇)之1.3 nRF5340开发平台之NCS入门
- unity2——tree树(自带)
- Android与RFID的点点滴滴(二)RFID通讯协议
- activex控件 新对象 ocx 初始化_VBA代码利用Listview控件来显示你的工作表任务
- 60行代码教你解决9*9数独游戏
- 03.03:E云管家
- oracle加了rownum后就很慢,rownum orderby非常慢
- 人人网的崛起——中国局域网的信息集散地