程序界面:
选择文件并播放:
使用指南:
点击选择文件:选择音频文件
点击播放:开始播放
点击暂停、停止、静音:实现对应功能
拖动音量条:调节音量
拖动进度条:调节进度
.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
本站由北京市万商天勤律师事务所王兴未律师提供法律服务