1 Star 0 Fork 2

JIANCAI/MusicPlayer_QT5

forked from fword/MusicPlayer_QT5 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
widget.h 5.20 KB
一键复制 编辑 原始数据 按行查看 历史
fword 提交于 2022-01-04 17:10 . v0.2.1 fix bugs[C
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QListWidget>
#include <QMediaPlayer>
#include <QTimer>
#include <QDialog>
#include <QMouseEvent>
#include <mycomponent.h>
#include <delegate.h>
#include <lyrics.h>
#include <connection.h>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class MusicList;
class Song;
class Widget : public QWidget
{
Q_OBJECT
private slots:
//按钮的响应函数
void onClose(); //关闭程序
void onWindowMin(); //窗口最小化
void onShowMusiclistClicked(); //显示选中歌单
void onAddMusiclistClicked(); //添加歌单
void onOpenFolder(); //打开文件夹添加本地歌曲
//右键菜单相关
void onShowMusicListMenu(QPoint pos); //显示歌单项右键菜单
void onShowSongMenu(QPoint); //显示歌曲项右键菜单
void onActionCollect(); //收藏菜单项的响应函数
void onActionDeleteMusiclist(); //删除歌单菜单项的响应函数
void onActionPlayMusiclist(); //播放歌单菜单项的响应函数
void onActionPlay(); //播放该歌曲菜单项的响应函数
void onActionDeleteSong(); //播放该歌曲菜单项的响应函数
void onActionNextPlay(); //下一首播放菜单项的响应函数
//播放相关
void onPlay(); //播放或暂停
void onPre(); //上一首
void onNext(); //下一首
void onMediaStatusChanged(QMediaPlayer::MediaStatus status); //播放状态发生变化时的响应函数
void onChangePlayMode(); //切换播放模式
//进度条相关
void onSliderPressed(); //点击进度条滑块时的响应函数
void onSliderReleased(); //释放进度条滑块时的响应函数
void onSliderMoved(int); //滑动进度条滑块时的响应函数
void setPlaySliderValue(); //进度条定时器的执行函数
void setVoiceSliderValue(int); //拖动音量条
//其他
void setPlayTime(); //根据当前播放进度设置播放时间
//void itemDoubleClicked(QTableWidgetItem *item); //双击歌曲项的响应函数
void showLyricWidget(); //显示\关闭歌词面板
void showNextLyrics(); //歌词面板定时器的执行函数
void showPlaylistWidget(); //显示播放列表
public:
Widget(QWidget *parent = nullptr);
~Widget();
QString getTime2Str(int time); //数字时间转为字符时间
void playSong(Song* song); //从头播放歌曲
void loadLyrics(QString FileName); //加载歌词并显示
void showNoLyrics(); //无歌词的显示
void setLyricsPos(int time); //根据时间确定歌词位置
void initUI(); //加载QSS,自定义程序显示风格
void setPlayTime(int time); //设置当前播放时间,单位:毫秒
void showMusiclist(MusicList* ml); //显示本地歌曲列表
void addPlaylist(MusicList* ml); //添加歌单到播放列表
protected:
//完成拖动程序窗口的功能需重载的函数
virtual void mousePressEvent(QMouseEvent *event) override;
virtual void mouseMoveEvent(QMouseEvent *event) override;
virtual void mouseReleaseEvent(QMouseEvent *event) override;
//处理自定义信号,这里主要处理点击进度条时发出的自定义信号,该信号用于完成一次性将滑块移动到点击位置的动作
virtual bool event(QEvent *event) override;
private:
Ui::Widget *ui;
QMediaPlayer *player; //播放器
QTimer *playslider_timer; //进度条定时器
QHash<Song*, Song*> playlist_hash;
PlayList* playlist; //播放列表
MusicList* cur_music_list; //当前歌曲列表的歌单
MyList<MusicList*>* m_playlists; //所有歌单
QMenu* musiclist_menu; //歌单项的右键菜单
QMenu *song_menu; //歌曲项的右键菜单
QMenu *show_musiclist_menu; //收藏到歌单项,子菜单
QAction* action_delete_musiclist; //删除歌单项
QAction* action_play_musiclist; //播放歌单项
bool mMoveing; //完成拖动程序窗口的功能用到的变量
QPoint mMovePosition; //完成拖动程序窗口的功能用到的变量
bool isSliderMoved, isSliderPressed; //判断进度条的点击是在滑块上还是进度条上
//歌词面板相关
Lyrics lyrics_info; //可读取保存歌词的对象
QVector<QListWidgetItem*> lyrics; //显示歌词的QListWidgetItem
QTimer* lyrics_timer; //歌词的定时器,执行高亮下一行歌词的函数
int last_time = 0; //当前高亮歌词行的时间
int cur_lyrics_line; //当前高亮歌词的行数
QFont font_normal; //非高亮歌词的字体
QFont font_bold; //高亮歌词的字体
};
#endif // WIDGET_H
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/jiaanCai/Cplusplus.git
git@gitee.com:jiaanCai/Cplusplus.git
jiaanCai
Cplusplus
MusicPlayer_QT5
master

搜索帮助