You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

114 lines
2.3 KiB

#ifndef MUSIC_H
#define MUSIC_H
#include <QDialog>
#include <QMediaPlayer>
#include <QMediaPlaylist>
#include <QPushButton>
#include <QSlider>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QListWidget>
#include <QLabel>
#include <QSpacerItem>
#include <QDebug>
#include <QMatrix>
#include <QTimer>
QT_BEGIN_NAMESPACE
namespace Ui { class music; }
QT_END_NAMESPACE
/* 媒体信息结构体 */
struct MediaObjectInfo {
/* 用于保存歌曲文件名 */
QString fileName;
/* 用于保存歌曲文件路径 */
QString filePath;
};
class music : public QDialog
{
Q_OBJECT
public:
music(QWidget *parent = nullptr);
~music();
int angle = 0;
void stopmusic();
private:
Ui::music *ui;
//定时器
QTimer *rotationTimer;
/* 媒体播放器,用于播放音乐 */
QMediaPlayer *musicPlayer;
/* 媒体列表 */
QMediaPlaylist *mediaPlaylist;
/* 音乐列表 */
QListWidget *listWidget;
/* 媒体信息存储 */
QVector<MediaObjectInfo> mediaObjectInfo;
/* 用于遮罩 */
QWidget *listMask;
/* 扫描歌曲 */
void scanSongs();
/* 媒体播放器类初始化 */
void mediaPlayerInit();
/* 音乐布局函数 */
void musicLayout();
void image_rotate(int Addangle);
private slots:
/* 播放按钮点击 */
void btn_play_clicked();
/* 下一曲按钮点击*/
void btn_next_clicked();
/* 上一曲按钮点击 */
void btn_previous_clicked();
/* 媒体状态改变 */
void mediaPlayerStateChanged(QMediaPlayer::State);
/* 列表单击 */
void listWidgetCliked(QListWidgetItem*);
/* 媒体列表项改变 */
void mediaPlaylistCurrentIndexChanged(int);
/* 媒体总长度改变 */
void musicPlayerDurationChanged(qint64);
/* 媒体播放位置改变 */
void mediaPlayerPositionChanged(qint64);
/* 控制音量条显示 */
void on_btn_volume_toggled(bool checked);
/* 播放进度条松开 */
void durationSliderReleased();
/* 音量控制 */
void volume_change();
void on_pushButton_clicked();
void on_pushButton_2_clicked();
signals:
void Music_close(bool FlMusic);
void Music_Minisize(bool FlMusic);
void Image_rate(bool t);
private slots:
void ImageRate(bool t);
};
#endif