音乐播放器关键代码分析
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QtMultimedia>
#include <QListWidgetItem>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
private:
QMediaPlayer *player; //播放器
bool loopPlay=true; //是否循环播放
QString durationTime; //文件总长度,mm:ss字符串
QString positionTime; //当前播放到位置,mm:ss字符串
QUrl getUrlFromItem(QListWidgetItem *item); //获取item的用户数据
bool eventFilter(QObject *watched, QEvent *event); //事件过滤处理
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
//自定义槽函数
void do_stateChanged(QMediaPlayer::PlaybackState state); //播放器状态发生变化
void do_sourceChanged(const QUrl &media); //文件发生变化
void do_durationChanged(qint64 duration); //文件长度发生变化
void do_positionChanged(qint64 position); //播放位置发生变化
void do_metaDataChanged(); //元数据发生变化
//
void on_btnAdd_clicked();
void on_btnPlay_clicked();
void on_btnPause_clicked();
void on_btnStop_clicked();
void on_listWidget_doubleClicked(const QModelIndex &index);
void on_btnClear_clicked();
void on_sliderVolumn_valueChanged(int value);
void on_btnSound_clicked();
void on_sliderPosition_valueChanged(int value);
void on_btnPrevious_clicked();
void on_btnNext_clicked();
void on_btnLoop_clicked(bool checked);
void on_doubleSpinBox_valueChanged(double arg1);
void on_btnRemove_clicked();
void on_btnClose_clicked();
void on_doubleSpinBox_textChanged(const QString &arg1);
void on_btnLoop_clicked();
void on_sliderVolumn_actionTriggered(int action);
void on_sliderPosition_actionTriggered(int action);
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
这是一个名为"MainWindow"的类,继承自QMainWindow。它是一个主窗口类,用于创建一个具有音频播放功能的应用程序界面。
在私有成员部分,包含了以下成员变量:
player:QMediaPlayer类型的指针,用于控制音频的播放。loopPlay:bool类型,表示是否循环播放音频。durationTime:QString类型的变量,表示音频文件的总时长(以mm:ss格式的字符串表示)。positionTime:QString类型的变量,表示当前音频播放的位置(以mm:ss格式的字符串表示)。
还有两个私有函数:
getUrlFromItem(QListWidgetItem *item):从QListWidgetItem中获取用户数据(QUrl类型),用于获取音频文件的URL。eventFilter(QObject *watched, QEvent *event):事件过滤处理函数,用于处理特定的事件。
公有部分包含了构造函数和析构函数。
私有槽函数部分定义了一些槽函数,用于响应相关信号的变化,包括:
do_stateChanged(QMediaPlayer::PlaybackState state):播放器状态发生变化的槽函数。do_sourceChanged(const QUrl &media):音频文件发生变化的槽函数。do_durationChanged(qint64 duration):音频文件总时长发生变化的槽函数。do_positionChanged(qint64 position):音频播放位置发生变化的槽函数。do_metaDataChanged():音频文件元数据发生变化的槽函数。
还包括一些其他槽函数,用于响应界面上的按钮点击事件和数值变化等。
最后,私有成员ui是一个指向Ui::MainWindo

本文详细分析了一个基于Qt的音乐播放器类(MainWindow)的代码,包括QMediaPlayer的使用、音频文件的添加、播放控制、循环播放、事件过滤以及元数据处理等功能。
最低0.47元/天 解锁文章
2224

被折叠的 条评论
为什么被折叠?



