代码拉取完成,页面将自动刷新
同步操作将从 fword/MusicPlayer_QT5 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#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
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。