您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页Qt 实例:音乐播放器

Qt 实例:音乐播放器

来源:化拓教育网

 程序界面:

选择文件并播放:

使用指南:

点击选择文件:选择音频文件

点击播放:开始播放

点击暂停、停止、静音:实现对应功能

拖动音量条:调节音量

拖动进度条:调节进度

.h文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QMediaPlayer>
#include <QAudioOutput>
#include <QDir>
#include <QFileDialog>
#include <QPushButton>
#include <QSlider>

QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    //选择文件--
    void on_selectButton_clicked();

    //设置静音
    void on_muteButton_clicked();

    //设置音量
    void on_volumeSlider_valueChanged(int value);

    //状态改变
    void onStateChanged(QMediaPlayer::PlaybackState state);

    //基本信息
    void onDurationChanged(qint duration);

    //设置位置
    void positionSliderChanged(int value);

    //位置改变
    void onPositionChanged(qint position);

private:
    Ui::Widget *ui;

    QString durationTime;//总时间长度
    QString positionTime;//当前播放位置

    QMediaPlayer *player;
    QAudioOutput *audioOutput;

    QSlider *positionSlider;

    //按钮样式1
    //白字红底-初始状态
    QString styleText_1  = "color:rgb(255,255,255);"  "background-color:rgb(224,61,57);"  "border-radius: 15px;";

    //白字红底-选择但未按下
    QString styleText_2  = "color:rgb(255,255,255);"  "background-color:rgb(232,109,106);"  "border-radius: 15px;";

    //红字白底-选择并按下
    QString styleText_3 = "color:rgb(224,61,57);"  "background-color:rgb(255,255,255);"  "border-radius: 15px;";

    //按钮样式2
    //白字绿底-初始状态
    QString styleText_4 = "color:rgb(255,255,255);"  "background-color:rgb(46,178,82);"  "border-radius: 15px;";

    //白字绿底-选择但未按下
    QString styleText_5 = "color:rgb(255,255,255);"  "background-color:rgb(51,195,);"  "border-radius: 15px;";

    //绿字白底-选择并按下
    QString styleText_6 = "color:rgb(46,178,82);"  "background-color:rgb(255,255,255);"  "border-radius: 15px;";

    //按钮样式3
    //白字橙底-初始状态
    QString styleText_7 = "color:rgb(255,255,255);"  "background-color:rgb(252,124,67);"  "border-radius: 15px;";

    //白字橙底-选择但未按下
    QString styleText_8 = "color:rgb(255,255,255);"  "background-color:rgb(253,149,103);"  "border-radius: 15px;";

    //橙字白底-选择并按下
    QString styleText_9 = "color:rgb(252,124,67);"  "background-color:rgb(255,255,255);"  "border-radius: 15px;";

    //按钮样式4
    //白字蓝底-初始状态
    QString styleText_11 = "color:rgb(255,255,255);"  "background-color:rgb(62,68,237);"  "border-radius: 15px;";
    //白字蓝底-选择但未按下
    QString styleText_12 = "color:rgb(255,255,255);"  "background-color:rgb(94,97,240);"  "border-radius: 15px;";
    //蓝字白底-选择并按下
    QString styleText_13 = "color:rgb(62,68,237);"  "background-color:rgb(255,255,255);"  "border-radius: 15px;";

    void setButton(QPushButton *Pb,QString styleText)
    {
        Pb->setStyleSheet(styleText);
        Pb->setFixedSize(100,50);
    }

    void  SetTime();

    bool eventFilter(QObject *obj, QEvent *event);

};
#endif // WIDGET_H

.cpp文件

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)  : QWidget(parent)  , ui(new Ui::Widget)
{
    ui->setupUi(this);

    setWindowTitle("音乐播放器");
    setWindowIcon(QIcon("://icon.png"));
    ui->label_file->setStyleSheet("color:rgb(0,0,0);"  "background-color:rgb(176,242,204);" "border-radius: 10px;");
    ui->label_time->setStyleSheet("color:rgb(255,255,255);"  "background-color:rgb(62,68,237);" "border-radius: 10px;");

    ui->label_volume->setStyleSheet("color:rgb(255,255,255);"  "background-color:rgb(46,178,82);" "border-radius: 10px;");
    ui->label_curVol->setStyleSheet("color:rgb(255,255,255);"  "background-color:rgb(46,178,82);" "border-radius: 25px;");

    ui->label_position->setStyleSheet("color:rgb(255,255,255);"  "background-color:rgb(252,124,67);" "border-radius: 10px;");
    ui->label_curpos->setStyleSheet("color:rgb(255,255,255);"  "background-color:rgb(252,124,67);" "border-radius: 10px;");

    positionSlider = new QSlider(this);
    positionSlider->setGeometry(130,195,550,40);
    positionSlider->setOrientation(Qt::Horizontal);


    ui->selectButton->installEventFilter(this);
    ui->PlayButton->installEventFilter(this);
    ui->PauseButton->installEventFilter(this);
    ui->StopButton->installEventFilter(this);
    ui->muteButton->installEventFilter(this);


    setButton(ui->selectButton,styleText_1);
    setButton(ui->PlayButton,styleText_4);
    setButton(ui->PauseButton,styleText_7);
    setButton(ui->StopButton,styleText_1);
    setButton(ui->muteButton,styleText_11);

    positionTime = "0分0秒";

    player = new QMediaPlayer(this);
    audioOutput = new QAudioOutput(this);
    player->setAudioOutput(audioOutput);

    connect(ui->PlayButton, &QPushButton::clicked,       player, &QMediaPlayer::play);
    connect(ui->StopButton, &QPushButton::clicked,      player, &QMediaPlayer::stop);
    connect(ui->PauseButton, &QPushButton::clicked,     player, &QMediaPlayer::pause);

    connect(positionSlider, SIGNAL(QSlider::valueChanged),     player, SLOT(positionSliderChanged()));

    connect(player,  &QMediaPlayer::playbackStateChanged,  this, &Widget::onStateChanged);
    connect(player,&QMediaPlayer::durationChanged,  this,  &Widget::onDurationChanged);
    connect(player,&QMediaPlayer::positionChanged,  this,  &Widget::onPositionChanged);

    //connect(player,SIGNAL(QMediaPlayer::positionChanged),  this,  SLOT(onPositionChanged_1()));

}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务