使用Qt编写一个简易的音乐播放器

1、MediaPlayer.pro

#-------------------------------------------------
#
# Project created by QtCreator 2023-10-12T09:15:53
#
#-------------------------------------------------

QT       += core gui
QT += multimedia
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = MediaPlayer
TEMPLATE = app


SOURCES += main.cpp\
        mediaplayerwidget.cpp

HEADERS  += mediaplayerwidget.h

FORMS    += mediaplayerwidget.ui

2、头文件mediaplayerwidget.h

#ifndef MEDIAPLAYERWIDGET_H
#define MEDIAPLAYERWIDGET_H

#include <QWidget>
#include <QMediaPlayer>
#include <QMediaPlaylist>
#include <QFileDialog>
#include <QMessageBox>
namespace Ui {
class MediaPlayerWidget;
}

class MediaPlayerWidget : public QWidget
{
    Q_OBJECT

public:
    explicit MediaPlayerWidget(QWidget *parent = 0);
    ~MediaPlayerWidget();

private slots:
    void on_AddPushButton_clicked();

    void on_PlayAndStopPushButton_clicked();

    void on_UpPushButton_clicked();

    void on_DownPushButton_clicked();


    void on_VolDial_valueChanged(int value);

    void on_MediaplayListWidget_currentRowChanged(int currentRow);

   void  currentMediaChangedSlot(const QMediaContent &item);
   void  currentdurationChangedSlot(qint64 duration);
   void horizontalSliderPositionChanged(qint64 Position);
   void on_horizontalSlider_sliderPressed();

   void on_horizontalSlider_sliderReleased();

   void on_horizontalSlider_valueChanged(int value);

private:
    Ui::MediaPlayerWidget *ui;
    //播放器对象指针
    QMediaPlayer   * MediaPlayer;
    QMediaPlaylist  * MediaPlaylist;
    bool    playSataFalge;
    bool    SliderPFlage;
};

#endif // MEDIAPLAYERWIDGET_H

3、主函数main.cpp

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

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MediaPlayerWidget w;
    w.show();

    return a.exec();
}

4、源文件mediaplayerwidget.cpp

#include "mediaplayerwidget.h"
#include "ui_mediaplayerwidget.h"
#include <QDebug>
MediaPlayerWidget::MediaPlayerWidget(QWidget *parent) :
    QWidget(parent),playSataFalge(false),SliderPFlage(false),
    ui(new Ui::MediaPlayerWidget)
{
    ui->setupUi(this);
    MediaPlayer = new   QMediaPlayer(this);       //实例化播放器对象
    MediaPlaylist =new  QMediaPlaylist(this);     //实例化歌单对象
    MediaPlayer->setPlaylist(MediaPlaylist);      //音乐播放器设置歌单
    MediaPlaylist->setCurrentIndex(0);            //初始状态
    MediaPlayer->setVolume(50);
    ui->VolDial->setValue(50);
    connect(MediaPlayer,SIGNAL(currentMediaChanged(const QMediaContent &)),this,SLOT(currentMediaChangedSlot(const QMediaContent &)));
    connect(MediaPlayer,SIGNAL(durationChanged(qint64)),this,SLOT(currentdurationChangedSlot(qint64)));
    connect(MediaPlayer,SIGNAL(positionChanged(qint64)),this,SLOT(horizontalSliderPositionChanged(qint64)));
}

MediaPlayerWidget::~MediaPlayerWidget()
{
    delete ui;
    delete MediaPlayer;
}
//添加歌单
void MediaPlayerWidget::on_AddPushButton_clicked()
{
    QStringList MP3files = QFileDialog::getOpenFileNames(this,"选择音乐文件",".","音乐文件 (*.mp3 *.mp4 *.MP3)");
    for(int i =0;i<MP3files.count();i++)
    {
        MediaPlaylist->addMedia(QUrl(MP3files.at(i)));
        ui->MediaplayListWidget->addItem(MP3files.at(i));
    }
}

void MediaPlayerWidget::on_PlayAndStopPushButton_clicked()
{
    if(!MediaPlaylist->isEmpty())
    {
        if(!playSataFalge)
        {
            MediaPlayer->play();
            playSataFalge = true;
            ui->PlayAndStopPushButton->setText("停止播放");
        }
        else
        {
            MediaPlayer->stop();
            playSataFalge = false;
            ui->PlayAndStopPushButton->setText("播放音乐");
        }
    }
    else
    {
        QMessageBox::warning(this,"播放器警告","歌单中未有音乐无法实现播放,请添加音乐");
    }
}

void MediaPlayerWidget::on_UpPushButton_clicked()
{
    MediaPlaylist->previous();
}

void MediaPlayerWidget::on_DownPushButton_clicked()
{
    MediaPlaylist->next();
}


void MediaPlayerWidget::on_VolDial_valueChanged(int value)
{
    MediaPlayer->setVolume(value);
}
//list窗口进行单击选择
void MediaPlayerWidget::on_MediaplayListWidget_currentRowChanged(int currentRow)
{
    if(currentRow < ui->MediaplayListWidget->count())
        MediaPlaylist->setCurrentIndex(currentRow);
}

void MediaPlayerWidget::currentMediaChangedSlot(const QMediaContent &item)
{
    //统计当前歌曲的时长

}
//持续时间改变
void MediaPlayerWidget::currentdurationChangedSlot(qint64 duration)
{
    ui->horizontalSlider->setMaximum(duration);
}

void MediaPlayerWidget::horizontalSliderPositionChanged(qint64 Position)
{
    if(!SliderPFlage)
    {
        ui->horizontalSlider->setValue(Position);
    }
}



void MediaPlayerWidget::on_horizontalSlider_sliderPressed()
{
    SliderPFlage=true;

}

void MediaPlayerWidget::on_horizontalSlider_sliderReleased()
{
    SliderPFlage=false;
    MediaPlayer->setPosition(ui->horizontalSlider->value());
}

void MediaPlayerWidget::on_horizontalSlider_valueChanged(int value)
{

}

5、mediaplayerwidget.ui

ui设计图

6、运行主界面

7、点击添加音乐并选择音乐文件

8、此时可以播放音乐并可以调节音量

  • 5
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
使用vs制作音乐播放器使用Qt制作音乐播放器在很多方面有一些相似之处,但也有一些显著的差异。 首先,无论是使用vs还是Qt,都可以实现创建一个图形界面的音乐播放器。通过使用图形界面,用户可以更直观地浏览和操作音乐文件。无论是选择vs还是Qt,都可以通过拖放控件、设置按钮和进度条等来构建用户友好的界面。 然而,vs和Qt的工作方式有所不同。在使用vs时,开发者通常会使用C#或C++等语言来编写代码。vs提供了一系列的图形界面设计工具,如Windows Forms或WPF,可以方便地创建图形界面。通过使用.NET Framework等库,可以轻松处理音乐文件的读取和播放。 相比之下,Qt一个跨平台的开发框架,使用C++语言编写代码。Qt在图形界面开发方面拥有强大的功能和灵活性。通过使用Qt的库和类,可以轻松实现音乐文件的读取、解码和播放功能。Qt还提供了丰富的UI控件和可定制化的样式,以满足开发者对音乐播放器界面的自定义需求。 另一个重要的区别是vs和Qt的适用平台不同。使用vs创建的音乐播放器主要运行在Windows操作系统上,而使用Qt创建的音乐播放器可以在多个操作系统上运行,包括Windows、Linux和Mac OS等。这意味着,如果开发者希望将音乐播放器应用到不同的平台上,选择Qt可能更具有优势。 总而言之,在选择vs还是Qt制作音乐播放器时,需要考虑开发者的编程经验、目标平台和需求,然后选择最适合的工具和技术来实现功能丰富的音乐播放器

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

再见时难别易

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值