2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > QT设计实现音乐播放器的基本功能

QT设计实现音乐播放器的基本功能

时间:2023-09-25 20:55:43

相关推荐

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();}

完整代码:/download/weixin_43793181/20335001

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。