Qt5.8 QMediaPlayer 音乐播放器

来源:互联网 发布:苍穹测绘软件视频教程 编辑:程序博客网 时间:2024/05/21 06:52

    学了半个月的Qt 做了个音乐播放器 实现了简单的功能 播放/暂停 歌曲 下一曲 上一曲 添加歌曲 查找歌曲 删除歌曲 添加至我喜欢 右键菜单 双击事件 更换皮肤 切换播放模式 清除列表 定位歌曲等功能  在做播放器的过程中 更熟悉了QMediaPlayer类 ,和 QMediaPlaylist 类的使用  以及一些窗体如QListWidget 堆栈窗体等的使用 程序思路比较简单

先定义个QMediaPlaylist *Playlist来存储播放歌曲的列表  ,使用ListWidget 来显示播放列表  ,然后在开个数据库来存储播放l列表歌曲的所在路径,然后在定义QMediaPlayer *music 来播放歌曲,另外还有一些功能没有实现 比如歌词,多选操作等  以后再尽量完成这些功能吧 下面是程序运行结果








还可以切换至小播放器模式






因为第一次写Qt大项目 所以代码写的有点乱


下面是一些源码(仅供参考):

项目下载地址 :http://download.csdn.net/download/daydream13580130043/9930726

connection.h链接数据库

#ifndef CONNECTION_H
#define CONNECTION_H
#include<QSqlDatabase>
#include<QSqlQuery>
static bool CreatConnection()
{
QSqlDatabase db=QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("music.db");
if(!db.open())
{
    return false;
}
QSqlQuery query;
query.exec(QString("create table HAHAHA (id int primary key,MusicName varchar,FileName varchar,biaoji int)"));//播放列表1
query.exec(QString("create table I_LIKE_DATA (id int primary key,MusicName varchar,FileName varchar)"));//播放列表2
query.exec(QString("create table NIMA (id int primary key,MusicName varchar,FileName varchar)"));//播放列表3
query.exec(QString("create table WALLPAPER_DATA (FileName varchar primary key)"));//壁纸数据
query.exec(QString("create table TRA_DATA (TRA double primary key)"));//透明度数据
query.exec(QString("create table Bizi_DATA (FileName varchar primary key)"));//壁纸
query.exec(QString("create table Toumin_DATA (TouMin double primary key)"));//透明度
return true;
}
#endif // CONNECTION_H
dailog.h //小播放器
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include<QPoint>
#include<QMouseEvent>
#include<QPixmap>
#include<QPalette>
#include<QMediaPlayer>
#include<QMediaPlaylist>
#include<QAction>
#include<QAction>
#include"widget.h"
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
    Q_OBJECT
public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
void mouseDoubleClickEvent(QMouseEvent *event);
void contextMenuEvent(QContextMenuEvent *event);
void setPlaylist(QMediaPlaylist *list,int row,int position,int volume,QMediaPlayer::State state,QMediaPlaylist::PlaybackMode playmodel,int i);
void updateText();
void updatePosition(qint64 position);
void updateDuration(qint64 duration);
void stateChange(QMediaPlayer::State state);
void PlaybackModel_slot(QMediaPlaylist::PlaybackMode model);
signals:
void Data(int row,int position,QMediaPlaylist *list,QMediaPlayer::State state,QMediaPlaylist::PlaybackMode model);
private slots:
    void on_pushButton_4_clicked();
    void on_pushButton_6_clicked();
    void on_pushButton_5_clicked();
    void on_pushButton_2_clicked();
    void on_pushButton_3_clicked();
    void on_pushButton_clicked();
    void play_slot();
    void next_slot();
    void pre_slot();
    void action1_slot();
    void action2_slot();
    void action3_slot();
    void action4_slot();
    void Action1_slot();
    void Action2_slot();
    void quit_slot();
    void on_pushButton_7_clicked();
private:
    Ui::Dialog *ui;
    QPoint offset;
    QPixmap pix;
    QPalette pal;
    QAction *play;
    QAction *next;
    QAction *pre;
    QAction *action;
    QAction *action1;
    QAction *action2;
    QAction *action3;
    QAction *action4;
    QAction *Action;
    QAction *Action1;
    QAction *Action2;
    QAction *quit;
    QMenu *menu;
    QMediaPlayer *music;
    QMediaPlaylist *playlist;
    double TouMin;
    int count=0;
};
#endif // DIALOG_H
dialog.cpp///实现

#include "dialog.h"
#include "ui_dialog.h"
#include<QPixmap>
#include<QPalette>
#include<QIcon>
#include<QMenu>
#include<QAction>
#include<QSqlDatabase>
#include<QSqlQuery>
#include<QShortcut>
#include<QFileDialog>
Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
    setAutoFillBackground(true);
    QSqlQuery query;
    query.exec("select * from Bizi_DATA");
    query.next();
    QString FileName=query.value(0).toString();
    if(FileName=="")
    {
    pix.load(":/image/image/589d8aa99fd71a2af1b3c3ee (2).jpg");
    }
    else
    {
        pix.load(FileName);
    }
    pal.setBrush(QPalette::Window,QBrush(pix.scaled(size(),Qt::IgnoreAspectRatio,Qt::SmoothTransformation)));
    setPalette(pal);
    query.exec("select * from Toumin_DATA");
    query.next();
    QString Temp=query.value(0).toString();
    if(Temp=="")
    {
        TouMin=1.0;
    }
    else
    {
        TouMin=Temp.toDouble();
    }
    setWindowOpacity(TouMin);
    ui->pushButton_2->setIconSize(QSize(48,48));
    ui->pushButton_2->setIcon(QIcon(":/image/image/control_play_48px_1116020_easyicon.net.png"));
    ui->pushButton->setToolTip(tr("上一首"));
    ui->pushButton_2->setToolTip(tr("暂停"));
    ui->pushButton_3->setToolTip(tr("下一首"));
    ui->pushButton_4->setToolTip(tr("关闭"));
    ui->pushButton_5->setToolTip(tr("最小化"));
    ui->pushButton_6->setToolTip(tr("返回主窗口/双击"));
    ui->horizontalSlider->setToolTip(tr("播放进度"));
    music=new QMediaPlayer(this);
    playlist=new QMediaPlaylist(this);
    playlist->setPlaybackMode(QMediaPlaylist::Loop);
    play=new QAction(this);
    next=new QAction(this);
    pre =new QAction(this);
    play->setIcon(QIcon(":/image/image/bofang1.png"));
    play->setText(tr("播放/暂停"));
    next->setIcon(QIcon(":/image/image/next1.png"));
    next->setText(tr("下一首"));
    pre->setIcon(QIcon(":/image/image/pre1.png"));
    pre->setText(tr("上一首"));
    action=new QAction(this);
    action1=new QAction(this);
    action2=new QAction(this);
    action3=new QAction(this);
    action4=new QAction(this);
    action->setIcon(QIcon(":/image/image/pf.png"));
    action->setText(tr("设置皮肤"));
    action1->setIcon(QIcon(":/image/image/pf2.png"));
    action1->setText(tr("默认皮肤1"));
    action2->setIcon(QIcon(":/image/image/pf5.png"));
    action2->setText(tr("默认皮肤2"));
    action3->setIcon(QIcon(":/image/image/pf3.png"));
    action3->setText(tr("默认皮肤3"));
    action4->setIcon(QIcon(":/image/image/pf4.png"));
    action4->setText(tr("自定义皮肤"));
    QMenu *Menu=new QMenu(this);
    Menu->addAction(action1);
    Menu->addAction(action2);
    Menu->addAction(action3);
    Menu->addAction(action4);
    action->setMenu(Menu);
    Action=new QAction(this);
    Action1=new QAction(this);
    Action2=new QAction(this);
    Action->setIcon(QIcon(":/image/image/ooopic_1500874104.png"));
    Action->setText(tr("设置透明度"));
    Action1->setIcon(QIcon(":/image/image/add.png"));
    Action1->setText(tr("+5%"));
    Action2->setIcon(QIcon(":/image/image/sub.png"));
    Action2->setText(tr("-5%"));
    QMenu *Menu1=new QMenu(this);
    Menu1->addAction(Action1);
    Menu1->addAction(Action2);
    Action->setMenu(Menu1);
    quit=new QAction(this);
    quit->setIcon(QIcon(":/image/image/tc.png"));
    quit->setText(tr("退出"));
    connect(music,&QMediaPlayer::metaDataAvailableChanged,this,&Dialog::updateText);
    connect(music,&QMediaPlayer::positionChanged,this,&Dialog::updatePosition);
    connect(music,&QMediaPlayer::durationChanged,this,&Dialog::updateDuration);
    connect(music,&QMediaPlayer::stateChanged,this,&Dialog::stateChange);
    connect(ui->horizontalSlider,&QSlider::sliderMoved,music,&QMediaPlayer::setPosition);
    connect(play,&QAction::triggered,this,&Dialog::play_slot);
    connect(next,&QAction::triggered,this,&Dialog::next_slot);
    connect(pre,&QAction::triggered,this,&Dialog::pre_slot);
    connect(action1,&QAction::triggered,this,&Dialog::action1_slot);
    connect(action2,&QAction::triggered,this,&Dialog::action2_slot);
    connect(action3,&QAction::triggered,this,&Dialog::action3_slot);
    connect(action4,&QAction::triggered,this,&Dialog::action4_slot);
    connect(Action1,&QAction::triggered,this,&Dialog::Action1_slot);
    connect(Action2,&QAction::triggered,this,&Dialog::Action2_slot);
    connect(quit,&QAction::triggered,this,&Dialog::quit_slot);
    connect(playlist,&QMediaPlaylist::playbackModeChanged,this,&Dialog::PlaybackModel_slot);
    ui->pushButton_7->setIconSize(QSize(32,32));
    ui->pushButton_7->setIcon(QIcon(":/image/image/player-icons_32px_1137007_easyicon.net.png"));
    ui->pushButton_7->setToolTip(tr("顺序播放"));
    ui->pushButton_8->setIconSize(QSize(32,32));
    ui->pushButton_8->setIcon(QIcon(":/image/image/Music_32px_1144946_easyicon.net.png"));
    ui->pushButton_8->setToolTip(tr("本地音乐列表"));
}
Dialog::~Dialog()
{
    delete ui;
}
void Dialog::on_pushButton_4_clicked()
{
    QCoreApplication::quit();
}
void Dialog::on_pushButton_6_clicked()
{
    emit Data(playlist->currentIndex(),music->position(),playlist,music->state(),playlist->playbackMode());
    music->pause();
    accept();
}
void Dialog::on_pushButton_5_clicked()
{
    showMinimized();
}
void Dialog::mousePressEvent(QMouseEvent *event)
{
    offset=event->globalPos()-pos();
    event->accept();
}
void Dialog::mouseMoveEvent(QMouseEvent *event)
{
    move(event->globalPos()-offset);
    event->accept();
}
void Dialog::mouseReleaseEvent(QMouseEvent *event)
{
    offset=QPoint();
    event->accept();
}
void Dialog::mouseDoubleClickEvent(QMouseEvent *event)
{
     emit Data(playlist->currentIndex(),music->position(),playlist,music->state(),playlist->playbackMode());
     music->pause();
     accept();
}
void Dialog::setPlaylist(QMediaPlaylist *list,int row,int position,int volume,QMediaPlayer::State state,QMediaPlaylist::PlaybackMode playmodel,int i)
{
    playlist=list;
    music->setPlaylist(playlist);
    playlist->setCurrentIndex(row);
    music->setPosition(position);
    music->setVolume(volume);
    if(state==QMediaPlayer::PlayingState)
        music->play();
    playlist->setPlaybackMode(playmodel);
    if(i==0)
    {
        ui->pushButton_8->setIcon(QIcon(":/image/image/Music_32px_1144946_easyicon.net.png"));
        ui->pushButton_8->setToolTip(tr("本地歌曲列表"));
    }
    else if(i==1)
    {
        ui->pushButton_8->setIcon(QIcon(":/image/image/like_32px_1101682_easyicon.net.png"));
        ui->pushButton_8->setToolTip(tr("我喜欢列表"));
    }
    else if(i==2)
    {
        ui->pushButton_8->setIcon(QIcon(":/image/image/list_32px_1074296_easyicon.net.png"));
        ui->pushButton_8->setToolTip(tr("播放队列列表"));
    }
}
void Dialog::updateText()
{
    QString Text;
    if(music->isMetaDataAvailable())
    {
        QString Title=music->metaData(QStringLiteral("Title")).toString();
        if(!Title.isEmpty())
        {
            Text=Title;
        }
        else
        {
            Text+=tr("未知歌曲");
        }
        Text+="-";
        QString Author=music->metaData(QStringLiteral("Author")).toString();
        if(!Author.isEmpty())
        {
            Text+=Author;
        }
        else
        {
            Text+=tr("未知作者");
        }
    }
    ui->label->setText(Text);
}
static QString Time(qint64 time)
{
    int sec=time/1000;
    int min=sec/60;
    sec-=min*60;
    return QStringLiteral("%1:%2")
            .arg(min, 2, 10, QLatin1Char('0'))
            .arg(sec, 2, 10, QLatin1Char('0'));
}
void Dialog::updatePosition(qint64 position)
{
    ui->horizontalSlider->setValue(position);
    ui->label_2->setText(Time(position)+"/"+Time(music->duration()));
}
void Dialog::updateDuration(qint64 duration)
{
    ui->horizontalSlider->setRange(0,duration);
    ui->horizontalSlider->setEnabled(duration>0);
    ui->horizontalSlider->setPageStep(duration/10);
}
void Dialog::on_pushButton_2_clicked()
{
    if(music->state()==QMediaPlayer::PlayingState)
    {
        music->pause();
        ui->pushButton_2->setIcon(QIcon(":/image/image/control_play_48px_1116020_easyicon.net.png"));
        ui->pushButton_2->setToolTip(tr("暂停"));
    }
    else
    {
        music->play();
        ui->pushButton_2->setIcon(QIcon(":/image/image/control_pause_48px_1116018_easyicon.net.png"));
        ui->pushButton_2->setToolTip(tr("播放"));
    }
}
void Dialog::stateChange(QMediaPlayer::State state)
{
    if(state==QMediaPlayer::PlayingState)
    {
        ui->pushButton_2->setIcon(QIcon(":/image/image/control_pause_48px_1116018_easyicon.net.png"));
        ui->pushButton_2->setToolTip(tr("播放"));
    }
    else
    {
        ui->pushButton_2->setIcon(QIcon(":/image/image/control_play_48px_1116020_easyicon.net.png"));
        ui->pushButton_2->setToolTip(tr("暂停"));
    }
}
void Dialog::on_pushButton_3_clicked()
{
    int currentIndex=playlist->currentIndex();
    if(++currentIndex==playlist->mediaCount())
    {
        currentIndex=0;
    }
    playlist->setCurrentIndex(currentIndex);
}
void Dialog::on_pushButton_clicked()
{
    int currentIndex=playlist->currentIndex();
    if(--currentIndex<0)
    {
        currentIndex=0;
    }
   playlist->setCurrentIndex(currentIndex);
}
void Dialog::contextMenuEvent(QContextMenuEvent *event)
{
 menu=new QMenu(this);
 menu->addAction(play);
 menu->addAction(next);
 menu->addAction(pre);
 menu->addAction(action);
 menu->addAction(Action);
 menu->addAction(quit);
 menu->exec(QCursor::pos());
}
void Dialog::play_slot()
{
if(music->state()==QMediaPlayer::PlayingState)
{
    music->pause();
}
else
{
    music->play();
}
}
void Dialog::next_slot()
{
    int currentIndex=playlist->currentIndex();
    if(++currentIndex==playlist->mediaCount())
    {
        currentIndex=0;
    }
    playlist->setCurrentIndex(currentIndex);
}
void Dialog::pre_slot()
{
    int currentIndex=playlist->currentIndex();
    if(--currentIndex<0)
    {
        currentIndex=0;
    }
   playlist->setCurrentIndex(currentIndex);
}
void Dialog::action1_slot()
{
    QString FileName=":/image/image/589d8aa99fd71a2af1b3c3ee (2).jpg";
    QSqlQuery query;
    query.exec("select * from Bizi_DATA");
    query.exec("delete from Bizi_DATA");
    query.exec(QString("insert into Bizi_DATA values ('%1')").arg(FileName));
    pix.load(FileName);
    pal.setBrush(QPalette::Window,QBrush(pix.scaled(size(),Qt::IgnoreAspectRatio,Qt::SmoothTransformation)));
    setPalette(pal);
}
void Dialog::action2_slot()
{
    QString FileName=":/image/image/5971bd2fe7bce76b7e577a90 (2).jpg";
    QSqlQuery query;
    query.exec("select * from Bizi_DATA");
    query.exec("delete from Bizi_DATA");
    query.exec(QString("insert into Bizi_DATA values ('%1')").arg(FileName));
    pix.load(FileName);
    pal.setBrush(QPalette::Window,QBrush(pix.scaled(size(),Qt::IgnoreAspectRatio,Qt::SmoothTransformation)));
    setPalette(pal);
}
void Dialog::action3_slot()
{
    QString FileName=":/image/image/nihao.jpg";
    QSqlQuery query;
    query.exec("select * from Bizi_DATA");
    query.exec("delete from Bizi_DATA");
    query.exec(QString("insert into Bizi_DATA values ('%1')").arg(FileName));
    pix.load(FileName);
    pal.setBrush(QPalette::Window,QBrush(pix.scaled(size(),Qt::IgnoreAspectRatio,Qt::SmoothTransformation)));
    setPalette(pal);
}
void Dialog::action4_slot()
{
QString FileName=QFileDialog::getOpenFileName(this,tr("文件"),"D:/",tr("图片文件(*jpg *png)"));
if(FileName!="")
{
    QSqlQuery query;
    query.exec("select * from Bizi_DATA");
    query.exec("delete from Bizi_DATA");
    query.exec(QString("insert into Bizi_DATA values ('%1')").arg(FileName));
    pix.load(FileName);
    pal.setBrush(QPalette::Window,QBrush(pix.scaled(size(),Qt::IgnoreAspectRatio,Qt::SmoothTransformation)));
    setPalette(pal);
}
}
void Dialog::Action1_slot()
{
    QSqlQuery query;
    query.exec("select * from Toumin_DATA");
    query.exec("delete from Toumin_DATA");
    if(TouMin<1.0)
    {
        TouMin+=0.05;
        query.exec(QString("insert into Toumin_DATA values (%1)").arg(TouMin));
    }
    setWindowOpacity(TouMin);
}
void Dialog::Action2_slot()
{
    QSqlQuery query;
    query.exec("select * from Toumin_DATA");
    query.exec("delete from Toumin_DATA");
    if(TouMin>0.4)
    {
        TouMin-=0.05;
        query.exec(QString("insert into Toumin_DATA values (%1)").arg(TouMin));
    }
    setWindowOpacity(TouMin);
}
void Dialog::quit_slot()
{
    QCoreApplication::quit();
}
void Dialog::on_pushButton_7_clicked()
{
    if(playlist->playbackMode()==QMediaPlaylist::Loop)
    {
        ui->pushButton_7->setIcon(QIcon(":/image/image/player-icons_32px_1137005_easyicon.net.png"));
        ui->pushButton_7->setToolTip(tr("随机播放"));
        playlist->setPlaybackMode(QMediaPlaylist::Random);
    }
    else if(playlist->playbackMode()==QMediaPlaylist::Random)
    {
        ui->pushButton_7->setIcon(QIcon(":/image/image/player-icons_32px_1137006_easyicon.net.png"));
        ui->pushButton_7->setToolTip(tr("单曲循环"));
        playlist->setPlaybackMode(QMediaPlaylist::CurrentItemInLoop);
    }
    else if(playlist->playbackMode()==QMediaPlaylist::CurrentItemInLoop)
    {
        ui->pushButton_7->setIcon(QIcon(":/image/image/player-icons_32px_1137007_easyicon.net.png"));
        ui->pushButton_7->setToolTip(tr("顺序播放"));
        playlist->setPlaybackMode(QMediaPlaylist::Loop);
    }
}
void Dialog::PlaybackModel_slot(QMediaPlaylist::PlaybackMode model)
{
    if(model==QMediaPlaylist::Loop)
    {
        ui->pushButton_7->setIcon(QIcon(":/image/image/player-icons_32px_1137007_easyicon.net.png"));
        ui->pushButton_7->setToolTip(tr("顺序播放"));
    }
    else if(model==QMediaPlaylist::Random)
    {
        ui->pushButton_7->setIcon(QIcon(":/image/image/player-icons_32px_1137005_easyicon.net.png"));
        ui->pushButton_7->setToolTip(tr("随机播放"));
    }
    else if(model==QMediaPlaylist::CurrentItemInLoop)
    {
        ui->pushButton_7->setIcon(QIcon(":/image/image/player-icons_32px_1137006_easyicon.net.png"));
        ui->pushButton_7->setToolTip(tr("单曲循环"));
        playlist->setPlaybackMode(QMediaPlaylist::CurrentItemInLoop);
    }
}

widget.h ///主窗口

#ifndef WIDGET_H
#define WIDGET_H
#include<QWidget>
#include<QMediaPlayer>
#include<QMediaPlaylist>
#include<QPixmap>
#include<QPalette>
#include<QStandardItemModel>
#include<QStandardItem>
#include<QAction>
#include<QMouseEvent>
#include<QList>
#include<QPaintEvent>
#include<QSqlTableModel>
#include"dialog.h"
class QMediaPlayer;
class QMediaPlaylist;
class QMenu;
class QAction;
class QSqlTableModel;
class Dialog;
class Form;
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
    Q_OBJECT
public:
    explicit Widget(QWidget *parent = 0);
    void updateInfo();
    void updatePosition(qint64 position);
    void updateDuration(qint64 duration);
    void updatalistwidget_3(int value);
    void updatalistwidget_2(int value);
    void updatalistwidget(int value);
    void changeVolume(int values);
    void pushbuttonstyle();
    void pushbuttonstyle_2();
    void pushbuttonstyle_3();
    void pushbuttonstyle_4();
    void mousePressEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent *event);
    void mouseReleaseEvent(QMouseEvent *event);
    void mouseDoubleClickEvent(QMouseEvent *event);
    ~Widget();
private slots:
    void on_pushButton_10_clicked();
    void on_pushButton_11_clicked();
    void on_pushButton_12_clicked();
    void on_pushButton_2_clicked();
    void on_pushButton_3_clicked();
    void on_pushButton_4_clicked();
    void on_pushButton_15_clicked();
    void on_pushButton_9_clicked();
    void on_listWidget_3_doubleClicked(const QModelIndex &index);
    void on_listWidget_2_doubleClicked(const QModelIndex &index);
    void on_listWidget_doubleClicked(const QModelIndex &index);
    void on_listWidget_4_doubleClicked(const QModelIndex &index);
    void action1_slot();
    void action2_slot();
    void action3_slot();
    void action4_1_slot();
    void action4_2_slot();
    void action5_1_slot();
    void action5_2_slot();
    void action5_3_slot();
    void action6_slot();
    void action7_slot();
    void action8_slot();
    void ClearALL_1_slot();
    void ClearALL_2_slot();
    void ClearALL_3_slot();
    void ClearALL_4_slot();
    void action9_slot();
    void action10_slot();
    void action11_slot();
    void action12_1_slot();
    void action12_2_slot();
    void action12_3_slot();
    void Action1_slot();
    void Action2_slot();
    void Action3_slot();
    void Action4_slot();
    void Action5_slot();
    void Action1_2_slot();
    void Action2_2_slot();
    void Action3_2_slot();
    void Action4_2_slot();
    void Action1_3_slot();
    void Action2_3_slot();
    void Action3_3_slot();
    void Action_slot();
    void Action_1_slot();
    void Action_2_slot();
    void Action_3_slot();
    void Action_4_slot();
    void detila_slot();
    void on_pushButton_7_clicked();
    void contextMenuEvent(QContextMenuEvent *event);
    void on_pushButton_17_clicked();
    void on_pushButton_16_clicked();
    void on_pushButton_8_clicked();
    void on_listWidget_3_customContextMenuRequested(const QPoint &pos);
    void on_listWidget_2_customContextMenuRequested(const QPoint &pos);
    void on_listWidget_customContextMenuRequested(const QPoint &pos);
    void music_stateChang(QMediaPlayer::State state);
    void on_pushButton_13_clicked();
    void on_pushButton_14_clicked();
    void on_pushButton_18_clicked();
    void on_listWidget_4_customContextMenuRequested(const QPoint &pos);
    void Next_slot();
    void Pre_slot();
    void nextlist_slot();
    void prelist_slot();
    void addV_slot();
    void subV_slot();
    void Locale_slot();
    void change_slot();
    void love_slot();
    void Data_slot(int row,int position,QMediaPlaylist *list,QMediaPlayer::State state,QMediaPlaylist::PlaybackMode model);
    void on_lineEdit_returnPressed();
    void PlaylistModel_slot(QMediaPlaylist::PlaybackMode model);
private:
    void CreateSortCut();
    Ui::Widget *ui;
    QMediaPlayer *music=NULL;
    QMediaPlaylist *playlist=NULL;
    QMediaPlaylist *playlist_2=NULL;
    QMediaPlaylist *playlist_3=NULL;
    QPixmap pix;
    QPalette pal;
    int count2=0;
    QAction *action1;
    QAction *action2;
    QAction *action3;
    QAction *action4;
    QAction *action4_1;
    QAction *action4_2;
    QAction *action5;
    QAction *action5_1;
    QAction *action5_2;
    QAction *action5_3;
    QAction *action6;
    QAction *action7;
    QAction *action8;
    QAction *ClearALL;
    QAction *ClearALL_1;
    QAction *ClearALL_2;
    QAction *ClearALL_3;
    QAction *ClearALL_4;
    QAction *action9;
    QAction *action10;
    QAction *action11;
    QAction *action12;
    QAction *action12_1;
    QAction *action12_2;
    QAction *action12_3;
    QAction *action13;
    QAction *detila;
    QMenu *menu;
    QPoint offset;
    double transparency;
    QSqlTableModel *model;
    QSqlTableModel *model_2;
    QSqlTableModel *model_3;
    QList<int> load;
    Dialog *Music=NULL;
};
#endif // WIDGET_H

widget.cpp//实现

#include "widget.h"
#include "ui_widget.h"
#include<QMediaPlayer>
#include<QMediaPlaylist>
#include<QFileDialog>
#include<QUrl>
#include<QDir>
#include<QSqlDatabase>
#include<QSqlQuery>
#include<QSqlQueryModel>
#include<QSqlTableModel>
#include<QMenu>
#include<QPainter>
#include<qmath.h>
#include<QShortcut>
#include<QMessageBox>
#include<QProgressBar>
#include<QProgressDialog>
#include"dialog.h"
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    setAutoFillBackground(true);
    CreateSortCut();
    Music=new Dialog();
    Music->setWindowFlags(Qt::FramelessWindowHint);
    action1=new QAction(this);
    action2=new QAction(this);
    action3=new QAction(this);
    action1->setIcon(QIcon(":/image/image/music_32px_1125557_easyicon.net.png"));
    action1->setText(tr("添加至本地音乐"));
    action1->setShortcut(QKeySequence("Ctrl+O"));
    action2->setIcon(QIcon(":/image/image/like_outline_32px_1101681_easyicon.net.png"));
    action2->setText(tr("添加至我喜欢"));
    action2->setShortcut(QKeySequence("Ctrl+A"));
    action3->setIcon(QIcon(":/image/image/list_32px_1074296_easyicon.net.png"));
    action3->setText(tr("添加至播放队列"));
    action3->setShortcut(QKeySequence("Ctrl+Z"));
    QMenu *menu1=new QMenu(this);
    menu1->addAction(action1);
    menu1->addAction(action2);
    menu1->addAction(action3);
    ui->pushButton->setMenu(menu1);
    action4=new QAction(this);
    action5=new QAction(this);
    action5_1=new QAction(this);
    action5_2=new QAction(this);
    action5_3=new QAction(this);
    action6=new QAction(this);
    action7=new QAction(this);
    action8=new QAction(this);
    ClearALL=new QAction(this);
    ClearALL_1=new QAction(this);
    ClearALL_2=new QAction(this);
    ClearALL_3=new QAction(this);
    ClearALL_4=new QAction(this);
    action4->setIcon(QIcon(":/image/image/ooopic_1500874104.png"));
    action4->setText(tr("设置透明度"));
    action4_1=new QAction(this);
    action4_2=new QAction(this);
    action4_1->setIcon(QIcon(":/image/image/plus_32px_1187514_easyicon.net.png"));
    action4_1->setText(tr("+5%"));
    action4_1->setShortcut(QKeySequence("Ctrl++"));
    action4_2->setIcon(QIcon(":/image/image/minus_306.28571428571px_1187500_easyicon.net.png"));
    action4_2->setText(tr("-5%"));
    action4_2->setShortcut(QKeySequence("Ctrl+-"));
    QMenu *temp=new QMenu(this);
    temp->addAction(action4_1);
    temp->addAction(action4_2);
    action4->setMenu(temp);
    action5->setIcon(QIcon(":/image/image/pf.png"));
    action5->setText(tr("设置皮肤"));
    action5_1->setIcon(QIcon(":/image/image/pf2.png"));
    action5_1->setText(tr("默认皮肤1"));
    action5_2->setIcon(QIcon(":/image/image/pf5.png"));
    action5_2->setText(tr("默认皮肤2"));
    action5_3->setIcon(QIcon(":/image/image/pf4.png"));
    action5_3->setText(tr("自定义皮肤"));
    action5_3->setShortcut(QKeySequence("Ctrl+X"));
    QMenu *ChangeBackGroundMenu=new QMenu(this);
    ChangeBackGroundMenu->addAction(action5_1);
    ChangeBackGroundMenu->addAction(action5_2);
    ChangeBackGroundMenu->addAction(action5_3);
    action5->setMenu(ChangeBackGroundMenu);
    ui->pushButton_6->setMenu(ChangeBackGroundMenu);
    action6->setIcon(QIcon(":/image/image/ooopic_1500873230.png"));
    action6->setText(tr("关于"));
    action7->setIcon(QIcon(":/image/image/ooopic_1500873272.png"));
    action7->setText(tr("使用介绍"));
    ClearALL->setIcon(QIcon(":/image/image/edit_clear_locationbar_ltr_32px_539686_easyicon.net.png"));
    ClearALL->setText(tr("清除"));
    ClearALL_1->setIcon(QIcon(":/image/image/Music_32px_1144946_easyicon.net.png"));
    ClearALL_1->setText(tr("清除本地音乐列表"));
    ClearALL_1->setShortcut(QKeySequence("Ctrl+M"));
    ClearALL_2->setIcon(QIcon(":/image/image/like_outline_32px_1170275_easyicon.net.png"));
    ClearALL_2->setText(tr("清除我喜欢列表"));
    ClearALL_2->setShortcut(QKeySequence("Ctrl+N"));
    ClearALL_3->setIcon(QIcon(":/image/image/list_32px_1142913_easyicon.net.png"));
    ClearALL_3->setText(tr("清除播放队列"));
    ClearALL_3->setShortcut(QKeySequence("Ctrl+B"));
    ClearALL_4->setIcon(QIcon(":/image/image/playlist_27.690544412607px_1187707_easyicon.net.png"));
    ClearALL_4->setText(tr("清除所有列表"));
    ClearALL_4->setShortcut(QKeySequence("Ctrl+V"));
    QMenu *M=new QMenu(this);
    M->addAction(ClearALL_1);
    M->addAction(ClearALL_2);
    M->addAction(ClearALL_3);
    M->addAction(ClearALL_4);
    ClearALL->setMenu(M);
    action8->setIcon(QIcon(":/image/image/tc.png"));
    action8->setText(tr("退出"));
    action8->setShortcut(QKeySequence("Ctrl+Q"));
    QMenu *menu2=new QMenu(this);
    menu2->addAction(action4);
    menu2->addAction(action5);
    menu2->addAction(action6);
    menu2->addAction(action7);
    menu2->addAction(ClearALL);
    menu2->addAction(action8);
    ui->pushButton_5->setMenu(menu2);
    action9=new QAction(this);
    action9->setIcon(QIcon(":/image/image/pre1.png"));
    action9->setText(tr("播放上一首"));
    action10=new QAction(this);
    action10->setIcon(QIcon(":/image/image/next1.png"));
    action10->setText(tr("播放下一首"));
    action11=new QAction(this);
    action11->setIcon(QIcon(":/image/image/zangting.png"));
    action11->setText(tr("播放/暂停"));
    action12=new QAction(this);
    action12->setIcon(QIcon(":/image/image/moshi1.png"));
    action12->setText(tr("播放模式"));
    action12_1=new QAction(this);
    action12_1->setIcon(QIcon(":/image/image/player-icons_32px_1137007_easyicon.net.png"));
    action12_1->setText(tr("顺序播放"));
    action12_2=new QAction(this);
    action12_2->setIcon(QIcon(":/image/image/player-icons_32px_1137005_easyicon.net.png"));
    action12_2->setText(tr("随机播放"));
    action12_3=new QAction(this);
    action12_3->setIcon(QIcon(":/image/image/player-icons_32px_1137006_easyicon.net.png"));
    action12_3->setText(tr("单曲循环"));
    QMenu *temp1=new QMenu(this);
    temp1->addAction(action12_1);
    temp1->addAction(action12_2);
    temp1->addAction(action12_3);
    action12->setMenu(temp1);
    action13=new QAction(this);
    action13->setIcon(QIcon(":/image/image/tc.png"));
    action13->setShortcut(QKeySequence("Ctrl+Q"));
    action13->setText(tr("退出"));
    detila = new QAction(this);
    detila->setIcon(QIcon(":/image/image/inf.png"));
    detila->setText(tr("歌曲信息"));
    QSqlQuery query;
    query.exec("select * from WALLPAPER_DATA");
    query.next();
    QString FileName=query.value(0).toString();
    if(FileName=="")
    {
        pix.load(":/image/image/59106362042208421aaabcb9.jpg");
    }
    else
    {
        pix.load(FileName);
    }
    query.exec("select * from TRA_DATA");
    query.next();
    QString Values=query.value(0).toString();
    if(Values=="")
    {
        transparency=1;
    }
    else
    {
        transparency=Values.toDouble();
    }
    setWindowOpacity(transparency);
    pal.setBrush(QPalette::Window,QBrush(pix.scaled(size(),Qt::IgnoreAspectRatio,Qt::SmoothTransformation)));
    setPalette(pal);
    music=new QMediaPlayer(this);
    playlist =new QMediaPlaylist(this);
    playlist->setPlaybackMode(QMediaPlaylist::Loop);
    playlist_2=new QMediaPlaylist(this);
    playlist_2->setPlaybackMode(QMediaPlaylist::Loop);
    playlist_3=new QMediaPlaylist(this);
    playlist_3->setPlaybackMode(QMediaPlaylist::Loop);
    ui->pushButton_2->setIconSize(QSize(48,48));
    ui->pushButton_2->setIcon(QIcon(":/image/image/control_play_48px_1116020_easyicon.net.png"));
    ui->pushButton_15->setIconSize(QSize(32,32));
    ui->pushButton_15->setIcon(QIcon(":/image/image/arrow_left_square_32px_1187786_easyicon.net.png"));
    ui->pushButton_9->setIconSize(QSize(32,32));
    ui->pushButton_9->setIcon(QIcon(":/image/image/player-icons_32px_1137007_easyicon.net.png"));
    ui->pushButton_14->setIconSize(QSize(32,32));
    ui->pushButton_14->setIcon(QIcon(":/image/image/like_outline_32px_1170275_easyicon.net.png"));
    ui->pushButton_8->setIconSize(QSize(32,32));
    ui->pushButton_8->setIcon(QIcon(":/image/image/yingliang.png"));
    ui->horizontalSlider->setToolTip(tr("播放进度"));
    ui->pushButton->setToolTip(tr("添加歌曲"));
    ui->pushButton_2->setToolTip(tr("暂停"));
    ui->pushButton_3->setToolTip(tr("下一首"));
    ui->pushButton_4->setToolTip(tr("上一首"));
    ui->pushButton_5->setToolTip(tr("设置"));
    ui->pushButton_6->setToolTip(tr("更换皮肤"));
    ui->pushButton_7->setToolTip(tr("定位"));
    ui->pushButton_8->setToolTip(tr("音量"));
    ui->pushButton_9->setToolTip(tr("顺序播放"));
    ui->pushButton_10->setToolTip(tr("本地音乐"));
    ui->pushButton_11->setToolTip(tr("我喜欢"));
    ui->pushButton_12->setToolTip(tr("播放队列"));
    ui->pushButton_13->setToolTip(tr("切换至极简模式/双击"));
    ui->pushButton_15->setToolTip(tr("隐藏播放列表"));
    ui->pushButton_17->setToolTip(tr("关闭"));
    ui->pushButton_16->setToolTip(tr("最小化"));
    ui->verticalSlider->hide();
    ui->verticalSlider->setValue(100);
    ui->horizontalSlider->setValue(0);
    ui->stackedWidget->setCurrentIndex(0);
    ui->pushButton_10->setStyleSheet("QPushButton"
    "{"
    "background-image: url(:/image/image/music_32px_1125557_easyicon.net.png);"
    "background-color: rgba(255, 255, 255,100);"
    "border-style:outset;"
    "border-color:rgba(255,255,255,0);"
    "border-radius:4px;"
    "}"
    "QPushButton:hover{"
    "background-color: rgb(255, 255, 255,100);"
    "}"
    "QPushButton:pressed{"
    " background-color: rgba(95, 95, 95,100);"
    "border-color:rgba(255,255,255,30);"
    "border-style:inset;"
    "color:rgba(0,0,0,100);"
   " }"
);
    model=new QSqlTableModel(this);
    model->setTable("HAHAHA");
    model->select();
    model_2=new QSqlTableModel(this);
    model_2->setTable("I_LIKE_DATA");
    model_2->select();
    model_3=new QSqlTableModel(this);
    model_3->setTable("NIMA");
    model_3->select();
    connect(music,&QMediaPlayer::metaDataAvailableChanged,this,&Widget::updateInfo);
    connect(music,&QMediaPlayer::positionChanged,this,&Widget::updatePosition);
    connect(music,&QMediaPlayer::durationChanged,this,&Widget::updateDuration);
    connect(ui->horizontalSlider,&QSlider::sliderMoved,music,&QMediaPlayer::setPosition);
    connect(playlist,&QMediaPlaylist::currentIndexChanged,this,&Widget::updatalistwidget_3);
    connect(playlist_2,&QMediaPlaylist::currentIndexChanged,this,&Widget::updatalistwidget_2);
    connect(playlist_3,&QMediaPlaylist::currentIndexChanged,this,&Widget::updatalistwidget);
    connect(action1,&QAction::triggered,this,&Widget::action1_slot);
    connect(action2,&QAction::triggered,this,&Widget::action2_slot);
    connect(action3,&QAction::triggered,this,&Widget::action3_slot);
    connect(action4_1,&QAction::triggered,this,&Widget::action4_1_slot);
    connect(action4_2,&QAction::triggered,this,&Widget::action4_2_slot);
    connect(action5_1,&QAction::triggered,this,&Widget::action5_1_slot);
    connect(action5_2,&QAction::triggered,this,&Widget::action5_2_slot);
    connect(action5_3,&QAction::triggered,this,&Widget::action5_3_slot);
    connect(action6,&QAction::triggered,this,&Widget::action6_slot);
    connect(action7,&QAction::triggered,this,&Widget::action7_slot);
    connect(action8,&QAction::triggered,this,&Widget::action8_slot);
    connect(ClearALL_1,&QAction::triggered,this,&Widget::ClearALL_1_slot);
    connect(ClearALL_2,&QAction::triggered,this,&Widget::ClearALL_2_slot);
    connect(ClearALL_3,&QAction::triggered,this,&Widget::ClearALL_3_slot);
    connect(ClearALL_4,&QAction::triggered,this,&Widget::ClearALL_4_slot);
    connect(action13,&QAction::triggered,this,&Widget::action8_slot);
    connect(action9,&QAction::triggered,this,&Widget::action9_slot);
    connect(action10,&QAction::triggered,this,&Widget::action10_slot);
    connect(action11,&QAction::triggered,this,&Widget::action11_slot);
    connect(action12_1,&QAction::triggered,this,&Widget::action12_1_slot);
    connect(action12_2,&QAction::triggered,this,&Widget::action12_2_slot);
    connect(action12_3,&QAction::triggered,this,&Widget::action12_3_slot);
    connect(ui->verticalSlider,&QSlider::valueChanged,this,&Widget::changeVolume);
    connect(music,&QMediaPlayer::stateChanged,this,&Widget::music_stateChang);
    connect(Music,&Dialog::Data,this,&Widget::Data_slot);
    connect(detila,&QAction::triggered,this,&Widget::detila_slot);
    connect(playlist,&QMediaPlaylist::playbackModeChanged,this,&Widget::PlaylistModel_slot);
    query.exec("select * from HAHAHA");
    while(query.next())
    {
        QString Name=query.value(1).toString();
        QString FileName=query.value(2).toString();
        if(Name!=""&&FileName!="")
        {
        QListWidgetItem *item1=new QListWidgetItem;
        item1->setIcon(QIcon(":/image/image/Music_32px_1144946_easyicon.net.png"));
        item1->setText(Name);
        ui->listWidget_3->addItem(item1);
        playlist->addMedia(QUrl::fromLocalFile(FileName));
        }
    }
    query.exec("select * from I_LIKE_DATA");
    while(query.next())
    {
        QString Name=query.value(1).toString();
        QString FileName=query.value(2).toString();
        if(Name!=""&&FileName!="")
        {
        QListWidgetItem *item4=new QListWidgetItem;
        item4->setIcon(QIcon(":/image/image/like_outline_32px_1170275_easyicon.net.png"));
        item4->setText(Name);
        ui->listWidget_2->addItem(item4);
        playlist_2->addMedia(QUrl::fromLocalFile(FileName));
        }
    }
    query.exec("select * from NIMA");
    while(query.next())
    {
        QString Name=query.value(1).toString();
        QString FileName=query.value(2).toString();
        if(Name!=""&&FileName!="")
        {
        QListWidgetItem *item5=new QListWidgetItem;
       item5->setIcon(QIcon(":/image/image/music_not_25.570093457944px_1171234_easyicon.net.png"));
       item5->setText(Name);
        ui->listWidget->addItem(item5);
        playlist_3->addMedia(QUrl::fromLocalFile(FileName));
        }
    }
    music->setPlaylist(playlist);
}
Widget::~Widget()//析构
{
    delete ui;
}
static QString Time(qint64 time)//转换时间
{
    qint64 seconds=time/1000;
    const qint64 minutes=seconds/60;
    seconds-=minutes*60;
    return QStringLiteral("%1:%2")
            .arg(minutes, 2, 10, QLatin1Char('0'))
            .arg(seconds, 2, 10, QLatin1Char('0'));
}
void Widget::updateInfo()//更新文本
{
    QString info;
    info=tr("正在播放:  ");
    if(music->isMetaDataAvailable())
    {
        QString title=music->metaData(QStringLiteral("Title")).toString();
        if(!title.isEmpty())
        {
            info+=title;
        }
        else
        {
            info+=tr("未知歌曲");
        }
        info+="-";
        QString author=music->metaData(QStringLiteral("Author")).toString();
        if(!author.isEmpty())
        {
            info+=author;
        }
        else
        {
          info+=tr("未知作者");
        }
    }
    ui->label->setText(info);
    if(music->playlist()==playlist_2)
    {
        ui->pushButton_14->setIcon(QIcon(":/image/image/like_32px_1101682_easyicon.net.png"));
        ui->pushButton_14->setToolTip(tr("我喜欢"));
    }
    else if(music->playlist()==playlist_3)
    {
        ui->pushButton_14->setIcon(QIcon(":/image/image/Music_32px_1144946_easyicon.net.png"));
        ui->pushButton_14->setToolTip(tr("播放队列"));
    }
    else
    {
        QSqlQuery query;
        query.exec("select * from HAHAHA");
        model->setTable("HAHAHA");
        model->select();
        int row=playlist->currentIndex();
        int flag;
         flag=model->data(model->index(row,3)).toInt();
        if(flag)
        {
            ui->pushButton_14->setIcon(QIcon(":/image/image/like_32px_1101682_easyicon.net.png"));
            ui->pushButton_14->setToolTip(tr("我喜欢"));
        }
        else
        {
            ui->pushButton_14->setIcon(QIcon(":/image/image/like_outline_32px_1170275_easyicon.net.png"));
            ui->pushButton_14->setToolTip(tr("添加至我喜欢"));
        }
      }
}
void Widget::updatePosition(qint64 position)//更新播放位置
{
    ui->horizontalSlider->setValue(position);
    ui->label_2->setText(Time(position)+"/"+Time(music->duration()));
}
void Widget::updateDuration(qint64 duration)//更新播放进度
{
    ui->horizontalSlider->setRange(0,duration);
    ui->horizontalSlider->setEnabled(duration>0);
    ui->horizontalSlider->setPageStep(duration/10);
}
void Widget::pushbuttonstyle()//所有歌曲按钮亮
{
    ui->pushButton_10->setStyleSheet("QPushButton"
    "{"
    "background-image: url(:/image/image/music_32px_1125557_easyicon.net.png);"
    "background-color: rgba(255, 255, 255,100);"
    "border-style:outset;"
    "border-color:rgba(255,255,255,0);"
    "border-radius:4px;"
    "}"
    "QPushButton:hover{"
    "background-color: rgb(255, 255, 255,100);"
    "}"
    "QPushButton:pressed{"
    " background-color: rgba(95, 95, 95,100);"
    "border-color:rgba(255,255,255,30);"
    "border-style:inset;"
    "color:rgba(0,0,0,100);"
   " }"
);
    ui->pushButton_11->setStyleSheet("QPushButton"
                                     "{"
                                     "background-image: url(:/image/image/like_outline_32px_1170275_easyicon.net.png);"
                                     "background-color: rgba(255, 255, 255,0);"
                                     "border-style:outset;"
                                     "border-color:rgba(255,255,255,0);"
                                     "border-radius:4px;"
                                     "}"
                                     "QPushButton:hover{"
                                     "background-color: rgb(255, 255, 255,100);"
                                     "}"
                                     "QPushButton:pressed{"
                                     " background-color: rgba(95, 95, 95,100);"
                                     "border-color:rgba(255,255,255,30);"
                                     "border-style:inset;"
                                     "color:rgba(0,0,0,100);"
                                    " }");
    ui->pushButton_12->setStyleSheet("QPushButton"
                                     "{"
                                     "background-image: url(:/image/image/list_32px_1074296_easyicon.net.png);"
                                     "background-color: rgba(255, 255, 255,0);"
                                     "border-style:outset;"
                                     "border-color:rgba(255,255,255,0);"
                                     "border-radius:4px;"
                                     "}"
                                     "QPushButton:hover{"
                                     "background-color: rgb(255, 255, 255,100);"
                                     "}"
                                     "QPushButton:pressed{"
                                     " background-color: rgba(95, 95, 95,100);"
                                     "border-color:rgba(255,255,255,30);"
                                     "border-style:inset;"
                                     "color:rgba(0,0,0,100);"
                                    " }");
}
void Widget::pushbuttonstyle_2()//我喜欢按钮亮
{
    ui->pushButton_10->setStyleSheet("QPushButton"
    "{"
    "background-image: url(:/image/image/music_32px_1125557_easyicon.net.png);"
    "background-color: rgba(255, 255, 255,0);"
    "border-style:outset;"
    "border-color:rgba(255,255,255,0);"
    "border-radius:4px;"
    "}"
    "QPushButton:hover{"
    "background-color: rgb(255, 255, 255,100);"
    "}"
    "QPushButton:pressed{"
    " background-color: rgba(95, 95, 95,100);"
    "border-color:rgba(255,255,255,30);"
    "border-style:inset;"
    "color:rgba(0,0,0,100);"
   " }"
);
    ui->pushButton_11->setStyleSheet("QPushButton"
                                     "{"
                                     "background-image: url(:/image/image/like_outline_32px_1170275_easyicon.net.png);"
                                     "background-color: rgba(255, 255, 255,100);"
                                     "border-style:outset;"
                                     "border-color:rgba(255,255,255,0);"
                                     "border-radius:4px;"
                                     "}"
                                     "QPushButton:hover{"
                                     "background-color: rgb(255, 255, 255,100);"
                                     "}"
                                     "QPushButton:pressed{"
                                     " background-color: rgba(95, 95, 95,100);"
                                     "border-color:rgba(255,255,255,30);"
                                     "border-style:inset;"
                                     "color:rgba(0,0,0,100);"
                                    " }");
    ui->pushButton_12->setStyleSheet("QPushButton"
                                     "{"
                                     "background-image: url(:/image/image/list_32px_1074296_easyicon.net.png);"
                                     "background-color: rgba(255, 255, 255,0);"
                                     "border-style:outset;"
                                     "border-color:rgba(255,255,255,0);"
                                     "border-radius:4px;"
                                     "}"
                                     "QPushButton:hover{"
                                     "background-color: rgb(255, 255, 255,100);"
                                     "}"
                                     "QPushButton:pressed{"
                                     " background-color: rgba(95, 95, 95,100);"
                                     "border-color:rgba(255,255,255,30);"
                                     "border-style:inset;"
                                     "color:rgba(0,0,0,100);"
                                    " }");
}
void Widget::pushbuttonstyle_3()//自定义播放列表按钮亮
{
    ui->pushButton_10->setStyleSheet("QPushButton"
    "{"
    "background-image: url(:/image/image/music_32px_1125557_easyicon.net.png);"
    "background-color: rgba(255, 255, 255,0);"
    "border-style:outset;"
    "border-color:rgba(255,255,255,0);"
    "border-radius:4px;"
    "}"
    "QPushButton:hover{"
    "background-color: rgb(255, 255, 255,100);"
    "}"
    "QPushButton:pressed{"
    " background-color: rgba(95, 95, 95,100);"
    "border-color:rgba(255,255,255,30);"
    "border-style:inset;"
    "color:rgba(0,0,0,100);"
   " }"
);
    ui->pushButton_11->setStyleSheet("QPushButton"
                                     "{"
                                     "background-image: url(:/image/image/like_outline_32px_1170275_easyicon.net.png);"
                                     "background-color: rgba(255, 255, 255,0);"
                                     "border-style:outset;"
                                     "border-color:rgba(255,255,255,0);"
                                     "border-radius:4px;"
                                     "}"
                                     "QPushButton:hover{"
                                     "background-color: rgb(255, 255, 255,100);"
                                     "}"
                                     "QPushButton:pressed{"
                                     " background-color: rgba(95, 95, 95,100);"
                                     "border-color:rgba(255,255,255,30);"
                                     "border-style:inset;"
                                     "color:rgba(0,0,0,100);"
                                    " }");
    ui->pushButton_12->setStyleSheet("QPushButton"
                                     "{"
                                     "background-image: url(:/image/image/list_32px_1074296_easyicon.net.png);"
                                     "background-color: rgba(255, 255, 255,100);"
                                     "border-style:outset;"
                                     "border-color:rgba(255,255,255,0);"
                                     "border-radius:4px;"
                                     "}"
                                     "QPushButton:hover{"
                                     "background-color: rgb(255, 255, 255,100);"
                                     "}"
                                     "QPushButton:pressed{"
                                     " background-color: rgba(95, 95, 95,100);"
                                     "border-color:rgba(255,255,255,30);"
                                     "border-style:inset;"
                                     "color:rgba(0,0,0,100);"
                                    " }");
}
void Widget::pushbuttonstyle_4()
{
    ui->pushButton_10->setStyleSheet("QPushButton"
    "{"
    "background-image: url(:/image/image/music_32px_1125557_easyicon.net.png);"
    "background-color: rgba(255, 255, 255,0);"
    "border-style:outset;"
    "border-color:rgba(255,255,255,0);"
    "border-radius:4px;"
    "}"
    "QPushButton:hover{"
    "background-color: rgb(255, 255, 255,100);"
    "}"
    "QPushButton:pressed{"
    " background-color: rgba(95, 95, 95,100);"
    "border-color:rgba(255,255,255,30);"
    "border-style:inset;"
    "color:rgba(0,0,0,100);"
   " }"
);
    ui->pushButton_11->setStyleSheet("QPushButton"
                                     "{"
                                     "background-image: url(:/image/image/like_outline_32px_1170275_easyicon.net.png);"
                                     "background-color: rgba(255, 255, 255,0);"
                                     "border-style:outset;"
                                     "border-color:rgba(255,255,255,0);"
                                     "border-radius:4px;"
                                     "}"
                                     "QPushButton:hover{"
                                     "background-color: rgb(255, 255, 255,100);"
                                     "}"
                                     "QPushButton:pressed{"
                                     " background-color: rgba(95, 95, 95,100);"
                                     "border-color:rgba(255,255,255,30);"
                                     "border-style:inset;"
                                     "color:rgba(0,0,0,100);"
                                    " }");
    ui->pushButton_12->setStyleSheet("QPushButton"
                                     "{"
                                     "background-image: url(:/image/image/list_32px_1074296_easyicon.net.png);"
                                     "background-color: rgba(255, 255, 255,0);"
                                     "border-style:outset;"
                                     "border-color:rgba(255,255,255,0);"
                                     "border-radius:4px;"
                                     "}"
                                     "QPushButton:hover{"
                                     "background-color: rgb(255, 255, 255,100);"
                                     "}"
                                     "QPushButton:pressed{"
                                     " background-color: rgba(95, 95, 95,100);"
                                     "border-color:rgba(255,255,255,30);"
                                     "border-style:inset;"
                                     "color:rgba(0,0,0,100);"
                                    " }");
}
void Widget::on_pushButton_10_clicked()//跳至所有音乐
{
    ui->stackedWidget->setCurrentIndex(0);
    pushbuttonstyle();
}
void Widget::on_pushButton_11_clicked()//跳至自我喜欢
{
    ui->stackedWidget->setCurrentIndex(1);
    pushbuttonstyle_2();
}
void Widget::on_pushButton_12_clicked()//跳至自定义播放列表
{
    ui->stackedWidget->setCurrentIndex(2);
    pushbuttonstyle_3();
}
void Widget::detila_slot()
{
    if(music->playlist()==playlist)
    {
        int row=playlist->currentIndex();
        QString temp=ui->label->text();
        QString Author=temp.split("-").last();
        QString MusicName=temp.remove("-"+Author).split(":  ").last();
        QString time=ui->label_2->text().split("/").last();
        model->setTable("HAHAHA");
        model->select();
        QString FileName=model->data(model->index(row,2)).toString();
        QMessageBox::about(this,tr("歌曲信息"),tr("歌曲名 : %1  \n"
                                                 "作者 : %2 \n"
                                                 "时长 : %3 \n"
                                                 "文件路径 : %4\n").arg(MusicName).arg(Author).arg(time).arg(FileName));
    }
    else if(music->playlist()==playlist_2)
    {
        int row=playlist_2->currentIndex();
        QString temp=ui->label->text();
        QString Author=temp.split("-").last();
        QString MusicName=temp.remove("-"+Author).split(":  ").last();
        QString time=ui->label_2->text().split("/").last();
        model_2->setTable("I_LIKE_DATA");
        model_2->select();
        QString FileName=model_2->data(model_2->index(row,2)).toString();
        QMessageBox::about(this,tr("歌曲信息"),tr("歌曲名 : %1  \n"
                                                 "作者 : %2 \n"
                                                 "时长 : %3 \n"
                                                 "文件路径 : %4\n").arg(MusicName).arg(Author).arg(time).arg(FileName));
    }
    else
    {
        int row=playlist_3->currentIndex();
        QString temp=ui->label->text();
        QString Author=temp.split("-").last();
        QString MusicName=temp.remove("-"+Author).split(":  ").last();
        QString time=ui->label_2->text().split("/").last();
        model_3->setTable("NIMA");
        model_3->select();
        QString FileName=model_3->data(model_3->index(row,2)).toString();
        QMessageBox::about(this,tr("歌曲信息"),tr("歌曲名 : %1  \n"
                                                 "作者 : %2 \n"
                                                 "时长 : %3 \n"
                                                 "文件路径 : %4\n").arg(MusicName).arg(Author).arg(time).arg(FileName));
    }
}
void Widget::ClearALL_1_slot()
{
    int values=QMessageBox::information(this,tr("清除本地音乐列表"),tr("确定清除本地音乐列表?                              ."),QMessageBox::Yes|QMessageBox::No,QMessageBox::No);
    if(values==QMessageBox::Yes)
    {
        QSqlQuery query;
    query.exec("select * from HAHAHA");
    query.exec("delete from HAHAHA");
    ui->listWidget_3->clear();
    playlist->clear();
    }
}
void Widget::ClearALL_2_slot()
{
    int values=QMessageBox::information(this,tr("清除我喜欢列表"),tr("确定清除我喜欢列表?                              ."),QMessageBox::Yes|QMessageBox::No,QMessageBox::No);
    if(values==QMessageBox::Yes)
    {
        QSqlQuery query;
    query.exec("select * from I_LIKE_DATA");
    query.exec("delete from I_LIKE_DATA");
    query.exec("select * from HAHAHA");
    query.prepare(QString("update HAHAHA set biaoji = ? where biaoji = 1"));
    query.bindValue(0,0);
    query.exec();
    ui->listWidget_2->clear();
    playlist_2->clear();
    }
}
void Widget::ClearALL_3_slot()
{
    int values=QMessageBox::information(this,tr("清除播放队列"),tr("确定清除播放队列?                              ."),QMessageBox::Yes|QMessageBox::No,QMessageBox::No);
    if(values==QMessageBox::Yes)
    {
        QSqlQuery query;
    query.exec("select * from NIMA");
    query.exec("delete from NIMA");
    ui->listWidget->clear();
    playlist_3->clear();
    }
}
void Widget::ClearALL_4_slot()
{
    int values=QMessageBox::information(this,tr("清除所有列表"),tr("确定清除所有列表?                              ."),QMessageBox::Yes|QMessageBox::No,QMessageBox::No);
    if(values==QMessageBox::Yes)
    {
    QSqlQuery query;
    query.exec("delete from HAHAHA");
      query.exec("delete from NIMA");
       query.exec("delete from I_LIKE_DATA");
    ui->listWidget_3->clear();
    ui->listWidget_2->clear();
    ui->listWidget->clear();
    playlist->clear();
    playlist_2->clear();
    playlist_3->clear();
    }
}
void Widget::action1_slot()//添加菜单  添加至所有音乐
{
    ui->stackedWidget->setCurrentIndex(0);
    pushbuttonstyle();
    QSqlQuery query;
    query.exec("select * from HAHAHA");
    QStringList list=QFileDialog::getOpenFileNames(this,tr("文件"),"D:/",tr("音频文件(*.mp3)"));
    if(!list.isEmpty())
   {
    QProgressDialog *progressdialog=new QProgressDialog(this);
    progressdialog->setWindowModality(Qt::WindowModal);
    progressdialog->setMinimumDuration(100);
    progressdialog->resize(500,200);
    progressdialog->setWindowTitle(tr("添加歌曲"));
    progressdialog->setLabelText(tr("添加中                              ."));
    progressdialog->setCancelButtonText(tr("关闭"));
    progressdialog->setRange(0,list.size()-1);
    for(int i=0;i<list.size();i++)
    {
        QListWidgetItem *item=new QListWidgetItem;
        item->setIcon(QIcon(":/image/image/Music_32px_1144946_easyicon.net.png"));
        QString path=QDir::toNativeSeparators(list.at(i));
        progressdialog->setValue(i);
        if(i==list.size()-1)
        {
            progressdialog->close();
        }
        if(progressdialog->wasCanceled())
            progressdialog->close();
        if(!path.isEmpty())
        {
           playlist->addMedia(QUrl::fromLocalFile(path));
           QString Name=path.split("\\").last();
           Name.remove(QString(".mp3"));
           item->setText(QString("%1").arg(Name));
           ui->listWidget_3->addItem(item);
           query.exec(QString("insert into HAHAHA values (%1,'%2','%3',%4)").arg(qrand()%10000).arg(Name).arg(path).arg(0));
        }
    }
    }
}
void Widget::action2_slot()//添加菜单  添加至我喜欢
{
      ui->stackedWidget->setCurrentIndex(1);
      pushbuttonstyle_2();
    QSqlQuery query;
    query.exec("select *from I_LIKE_DATA");
    QStringList list = QFileDialog::getOpenFileNames(this,tr("所有文件"),"D:/",tr("音频文件(*.mp3)"));
    if(!list.isEmpty())
   { QProgressDialog *progressdialog=new QProgressDialog(this);
    progressdialog->setWindowModality(Qt::WindowModal);
    progressdialog->resize(500,200);
    progressdialog->setMinimumDuration(100);
    progressdialog->setWindowTitle(tr("添加歌曲"));
    progressdialog->setLabelText(tr("添加中                              ."));
    progressdialog->setCancelButtonText(tr("关闭"));
    progressdialog->setRange(0,list.size()-1);
    for(int i=0;i<list.size();i++)
    {
        QListWidgetItem *item2=new QListWidgetItem;
        item2->setIcon(QIcon(":/image/image/like_outline_32px_1170275_easyicon.net.png"));
        QString path=QDir::toNativeSeparators(list.at(i));
        progressdialog->setValue(i);
        if(i==list.size()-1)
        {
            progressdialog->close();
        }
        if(progressdialog->wasCanceled())
            progressdialog->close();
        if(!path.isEmpty())
        {
            playlist_2->addMedia(QUrl::fromLocalFile(path));
            QString Name=path.split("\\").last();
            Name.remove(QString(".mp3"));
            item2->setText(QString("%1").arg(Name));
            ui->listWidget_2->addItem(item2);
            query.exec(QString("insert into I_LIKE_DATA values (%1,'%2','%3')").arg(qrand()%10000).arg(Name).arg(path));
        }
    }
    }
}
void Widget::action3_slot()//添加菜单  添加至自定义菜单
{
  ui->stackedWidget->setCurrentIndex(2);
  pushbuttonstyle_3();
    QSqlQuery query;
    query.exec("select *from NIMA");
    QStringList list = QFileDialog::getOpenFileNames(this,tr("所有文件"),"D:/",tr("音频文件(*.mp3)"));
   if(!list.isEmpty())
   {
    QProgressDialog *progressdialog=new QProgressDialog(this);
    progressdialog->setWindowModality(Qt::WindowModal);
    progressdialog->setMinimumDuration(100);
    progressdialog->resize(500,200);
    progressdialog->setWindowTitle(tr("添加歌曲"));
    progressdialog->setLabelText(tr("添加中                              ."));
    progressdialog->setCancelButtonText(tr("关闭"));
    progressdialog->setRange(0,list.size()-1);
    for(int i=0;i<list.size();i++)
    {
        QListWidgetItem *item3=new QListWidgetItem;
        item3->setIcon(QIcon(":/image/image/music_not_25.570093457944px_1171234_easyicon.net.png"));
        QString path=QDir::toNativeSeparators(list.at(i));
        progressdialog->setValue(i);
        if(i==list.size()-1)
        {
            progressdialog->close();
        }
        if(progressdialog->wasCanceled())
            progressdialog->close();
        if(!path.isEmpty())
        {
            playlist_3->addMedia(QUrl::fromLocalFile(path));
            QString Name=path.split("\\").last();
            Name.remove(QString(".mp3"));
            item3->setText(QString("%1").arg(Name));
            ui->listWidget->addItem(item3);
            query.exec(QString("insert into NIMA values (%1,'%2','%3')").arg(qrand()%10000).arg(Name).arg(path));
        }
    }
   }
}
void Widget::action4_1_slot()//设置菜单  透明度+5%
{
    QSqlQuery query;
    query.exec("select * from TRA_DATA");
    query.exec("delete from TRA_DATA");
    if(transparency<1.0)
    {
        transparency+=0.05;
        query.exec(QString("insert into TRA_DATA values (%1)").arg(transparency));
    }
    setWindowOpacity(transparency);
}
void Widget::action4_2_slot()//设置菜单  透明度-5%
{ QSqlQuery query;
    query.exec("select * from TRA_DATA");
    query.exec("delete from TRA_DATA");
    if(transparency>0.4)
    {
        transparency-=0.05;
        query.exec(QString("insert into TRA_DATA values (%1)").arg(transparency));
    }
    setWindowOpacity(transparency);
}
void Widget::action5_1_slot()
{
    QString FileName=":/image/image/59106362042208421aaabcb9.jpg";
    QSqlQuery query;
    query.exec("delete from WALLPAPER_DATA");
    query.exec(QString("insert into WALLPAPER_DATA values('%1')").arg(FileName));
    pix.load(FileName);
    pal.setBrush(QPalette::Window,QBrush(pix.scaled(size(),Qt::IgnoreAspectRatio,Qt::SmoothTransformation)));
    setPalette(pal);
}
void Widget::action5_2_slot()
{
    QString FileName=":/image/image/59373528e7bce75645eb757a.jpg";
    QSqlQuery query;
    query.exec("delete from WALLPAPER_DATA");
    query.exec(QString("insert into WALLPAPER_DATA values('%1')").arg(FileName));
    pix.load(FileName);
    pal.setBrush(QPalette::Window,QBrush(pix.scaled(size(),Qt::IgnoreAspectRatio,Qt::SmoothTransformation)));
    setPalette(pal);
}
void Widget::action5_3_slot()//设置菜单  添加图片
{
    QString FileName=QFileDialog::getOpenFileName(this,tr("文件"),"D:/",tr("图片文件(*jpg *png)"));
    if(FileName!="")
    {
        QSqlQuery query;
        query.exec("delete from WALLPAPER_DATA");
        query.exec(QString("insert into WALLPAPER_DATA values('%1')").arg(FileName));
        pix.load(FileName);
        pal.setBrush(QPalette::Window,QBrush(pix.scaled(size(),Qt::IgnoreAspectRatio,Qt::SmoothTransformation)));
        setPalette(pal);
    }
}
void Widget::action6_slot()//设置  关于
{
QMessageBox::about(this,tr("关于"),tr("名称 : 我的音乐                         \n"
                                     "作者 : 邓鹏飞                           \n"
                                     "介绍 : 我的音乐是个界面简洁,具有添加,播放,搜索,\n"
                                     "删除等基础功能,用户可按喜好设置皮肤,窗体透明度,\n"
                                     "使界面更加绚丽,支持右键菜单和列表菜单和快捷键,使用户操作更便利,\n"
                                     "极简模式,可以进行基础的播放暂停等功能,缩小窗口体积,使播放器可玩性更高\n"));
}
void Widget::action7_slot()//设置菜单  使用
{QMessageBox::about(this,tr("使用"),tr("右键 : 菜单栏        \n"
                                     "双击 : 切换至极简模式         Ctrl-- : 透明度减\n"
                                     "空格 : 播放暂停              Ctrl++ : 透明度加\n"
                                     "向右键/数字键6 : 下一首       Ctrl+Q : 退出\n"
                                     "向左键/数字键4 : 上一首       Ctrl+V : 清除所有列表\n"
                                     "A : 切换列表                Ctrl+O : 添加至所有列表\n"
                                     "D : 切换列表                Ctrl+A : 添加至我喜欢列表\n"
                                     "W : 增加音量                Ctrl+Z : 添加至播放队列\n"
                                     "S : 减少音量                Ctrl+X : 自定义皮肤\n"
                                     "Q : 定位                   Ctrl+M : 清除所有歌曲列表\n"
                                     "E : 切换播放模式             Ctrl+N : 清除我喜欢列表\n"
                                     "R : 添加我喜欢              Ctrl+B : 清除播放队列\n"));
}
void Widget::action8_slot()//主窗口右键菜单 关闭
{
   close();
}
void Widget::action9_slot()//主窗口右键菜单 播放下一曲
{
    if(music->playlist()==playlist)
    {
        int currentIndex=playlist->currentIndex();
        ui->stackedWidget->setCurrentIndex(0);
        pushbuttonstyle();
        if(--currentIndex<0)
        {
            currentIndex=0;
        }
       playlist->setCurrentIndex(currentIndex);
    }
    else if(music->playlist()==playlist_2)
    {
        int currentIndex=playlist_2->currentIndex();
        ui->stackedWidget->setCurrentIndex(1);
        pushbuttonstyle_2();
        if(--currentIndex<0)
        {
            currentIndex=0;
        }
        playlist_2->setCurrentIndex(currentIndex);
    }
    else if(music->playlist()==playlist_3)
    {
        int currentIndex=playlist_3->currentIndex();
        ui->stackedWidget->setCurrentIndex(2);
        pushbuttonstyle_3();
        if(--currentIndex<0)
        {
            currentIndex=0;
        }
        playlist_3->setCurrentIndex(currentIndex);
    }
     music->play();
}
void Widget::action10_slot()//主窗口右键菜单 播放下一曲
{
    if(music->playlist()==playlist)
     {
        int currentIndex=playlist->currentIndex();
        ui->stackedWidget->setCurrentIndex(0);
        pushbuttonstyle();
        if(++currentIndex==playlist->mediaCount())
        {
            currentIndex=0;
        }
        playlist->setCurrentIndex(currentIndex);
    }
    else if(music->playlist()==playlist_2)
    {
        int currentIndex=playlist_2->currentIndex();
        ui->stackedWidget->setCurrentIndex(1);
        pushbuttonstyle_2();
        if(++currentIndex==playlist_2->mediaCount())
        {
            currentIndex=0;
        }
        playlist_2->setCurrentIndex(currentIndex);
    }
    else if(music->playlist()==playlist_3)
    {
        int currentIndex=playlist_3->currentIndex();
        ui->stackedWidget->setCurrentIndex(2);
        pushbuttonstyle_3();
        if(++currentIndex==playlist_3->mediaCount())
        {
            currentIndex=0;
        }
        playlist_3->setCurrentIndex(currentIndex);
    }
    music->play();
}
void Widget::action11_slot()//播放暂停
{
   if(music->state()==QMediaPlayer::PlayingState)
   {
       music->pause();
   }
   else
   {
       music->play();
   }
}
void Widget::action12_1_slot()//主窗口右键菜单 顺序播放
{
    ui->pushButton_9->setIcon(QIcon(":/image/image/player-icons_32px_1137007_easyicon.net.png"));
    ui->pushButton_9->setToolTip(tr("顺序播放"));
    playlist->setPlaybackMode(QMediaPlaylist::Loop);
    playlist_2->setPlaybackMode(QMediaPlaylist::Loop);
    playlist_3->setPlaybackMode(QMediaPlaylist::Loop);
}
void Widget::action12_2_slot()//主窗口右键菜单 随机播放
{
    ui->pushButton_9->setIcon(QIcon(":/image/image/player-icons_32px_1137005_easyicon.net.png"));
    ui->pushButton_9->setToolTip(tr("随机播放"));
    playlist->setPlaybackMode(QMediaPlaylist::Random);
    playlist_2->setPlaybackMode(QMediaPlaylist::Random);
    playlist_3->setPlaybackMode(QMediaPlaylist::Random);
}
void Widget::action12_3_slot()//主窗口右键菜单 单曲循环
{
    ui->pushButton_9->setIcon(QIcon(":/image/image/player-icons_32px_1137006_easyicon.net.png"));
    ui->pushButton_9->setToolTip(tr("单曲循环"));
    playlist->setPlaybackMode(QMediaPlaylist::CurrentItemInLoop);
    playlist_2->setPlaybackMode(QMediaPlaylist::CurrentItemInLoop);
    playlist_3->setPlaybackMode(QMediaPlaylist::CurrentItemInLoop);
}
void Widget::on_pushButton_2_clicked()//播放and暂停
{
   if(music->state()==QMediaPlayer::PlayingState)
    {
       ui->pushButton_2->setIcon(QIcon(":/image/image/control_play_48px_1116020_easyicon.net.png"));
       ui->pushButton_2->setToolTip(tr("暂停"));
       music->pause();
    }
    else
    {
       ui->pushButton_2->setIcon(QIcon(":/image/image/control_pause_48px_1116018_easyicon.net.png"));
       ui->pushButton_2->setToolTip(tr("播放"));
       music->play();
    }
}
void Widget::on_pushButton_3_clicked()//播放下一曲
{
    if(music->playlist()==playlist)
     {
        int currentIndex=playlist->currentIndex();
        ui->stackedWidget->setCurrentIndex(0);
        pushbuttonstyle();
        if(++currentIndex==playlist->mediaCount())
        {
            currentIndex=0;
        }
        playlist->setCurrentIndex(currentIndex);
    }
    else if(music->playlist()==playlist_2)
    {
        int currentIndex=playlist_2->currentIndex();
        ui->stackedWidget->setCurrentIndex(1);
        pushbuttonstyle_2();
        if(++currentIndex==playlist_2->mediaCount())
        {
            currentIndex=0;
        }
        playlist_2->setCurrentIndex(currentIndex);
    }
    else if(music->playlist()==playlist_3)
    {
        int currentIndex=playlist_3->currentIndex();
        ui->stackedWidget->setCurrentIndex(2);
        pushbuttonstyle_3();
        if(++currentIndex==playlist_3->mediaCount())
        {
            currentIndex=0;
        }
        playlist_3->setCurrentIndex(currentIndex);
    }
    music->play();
}
void Widget::on_pushButton_4_clicked()//播放上一曲
{
    if(music->playlist()==playlist)
    {
        int currentIndex=playlist->currentIndex();
        ui->stackedWidget->setCurrentIndex(0);
        pushbuttonstyle();
        if(--currentIndex<0)
        {
            currentIndex=0;
        }
       playlist->setCurrentIndex(currentIndex);
    }
    else if(music->playlist()==playlist_2)
    {
        int currentIndex=playlist_2->currentIndex();
        ui->stackedWidget->setCurrentIndex(1);
        pushbuttonstyle_2();
        if(--currentIndex<0)
        {
            currentIndex=0;
        }
        playlist_2->setCurrentIndex(currentIndex);
    }
    else if(music->playlist()==playlist_3)
    {
        int currentIndex=playlist_3->currentIndex();
        ui->stackedWidget->setCurrentIndex(2);
        pushbuttonstyle_3();
        if(--currentIndex<0)
        {
            currentIndex=0;
        }
        playlist_3->setCurrentIndex(currentIndex);
    }
     music->play();
}
void Widget::updatalistwidget_3(int value)//更新listWidget_3
{
   ui->listWidget_3->item(value)->setSelected(true);
}
void Widget::updatalistwidget_2(int value)//更新listWidget_2
{
   ui->listWidget_2->item(value)->setSelected(true);
}
void Widget::updatalistwidget(int value)//更新listWidget
{
    ui->listWidget->item(value)->setSelected(true);
}
void Widget::on_listWidget_3_doubleClicked(const QModelIndex &index)//双击播放playlist
{
    music->setPlaylist(playlist);
    playlist->setCurrentIndex(ui->listWidget_3->currentIndex().row());
    music->play();
}
void Widget::music_stateChang(QMediaPlayer::State state)//播放状态改变
{
    if(state==QMediaPlayer::PlayingState)
    {
        ui->pushButton_2->setIcon(QIcon(":/image/image/control_pause_48px_1116018_easyicon.net.png"));
        ui->pushButton_2->setToolTip(tr("播放"));
    }
    else
    {
        ui->pushButton_2->setIcon(QIcon(":/image/image/control_play_48px_1116020_easyicon.net.png"));
        ui->pushButton_2->setToolTip(tr("暂停"));
    }
}
void Widget::on_pushButton_15_clicked()//隐藏stackedWidget
{
    if(ui->stackedWidget->isHidden())
    {
        ui->pushButton_15->setIcon(QIcon(":/image/image/arrow_left_square_32px_1187786_easyicon.net.png"));
        ui->pushButton_15->setToolTip(tr("隐藏播放列表"));
        ui->stackedWidget->show();
        ui->pushButton_10->show();
        ui->pushButton_11->show();
        ui->pushButton_12->show();
        ui->label->move(QPoint(340,520));
        ui->pushButton_15->move(QPoint(260,10));
        ui->label_3->move(350,390);
        ui->label_4->move(540,430);
    }
    else
    {
        ui->pushButton_15->setIcon(QIcon(":/image/image/arrow_right_square_32px_1187789_easyicon.net.png"));
        ui->pushButton_15->setToolTip(tr("显示播放列表"));
        ui->stackedWidget->hide();
        ui->pushButton_10->hide();
        ui->pushButton_11->hide();
        ui->pushButton_12->hide();
        ui->label->move(QPoint(200,520));
        ui->pushButton_15->move(QPoint(10,10));
        ui->label_3->move(100,390);
        ui->label_4->move(410,430);
    }
}
void Widget::on_pushButton_9_clicked()//播放模式
{
    if(playlist->playbackMode()==QMediaPlaylist::Loop)
    {
        ui->pushButton_9->setIcon(QIcon(":/image/image/player-icons_32px_1137005_easyicon.net.png"));
        ui->pushButton_9->setToolTip(tr("随机播放"));
        playlist->setPlaybackMode(QMediaPlaylist::Random);
        playlist_2->setPlaybackMode(QMediaPlaylist::Random);
        playlist_3->setPlaybackMode(QMediaPlaylist::Random);
    }
    else if(playlist->playbackMode()==QMediaPlaylist::Random)
    {
        ui->pushButton_9->setIcon(QIcon(":/image/image/player-icons_32px_1137006_easyicon.net.png"));
        ui->pushButton_9->setToolTip(tr("单曲循环"));
        playlist->setPlaybackMode(QMediaPlaylist::CurrentItemInLoop);
        playlist_2->setPlaybackMode(QMediaPlaylist::CurrentItemInLoop);
        playlist_3->setPlaybackMode(QMediaPlaylist::CurrentItemInLoop);
    }
    else if(playlist->playbackMode()==QMediaPlaylist::CurrentItemInLoop)
    {
        ui->pushButton_9->setIcon(QIcon(":/image/image/player-icons_32px_1137007_easyicon.net.png"));
        ui->pushButton_9->setToolTip(tr("顺序播放"));
        playlist->setPlaybackMode(QMediaPlaylist::Loop);
        playlist_2->setPlaybackMode(QMediaPlaylist::Loop);
        playlist_3->setPlaybackMode(QMediaPlaylist::Loop);
    }
}
void Widget::on_listWidget_2_doubleClicked(const QModelIndex &index)//双击播放playlist_2
{
      music->setPlaylist(playlist_2);
      playlist_2->setCurrentIndex( ui->listWidget_2->currentIndex().row());
      music->play();
}
void Widget::on_listWidget_doubleClicked(const QModelIndex &index)//双击播放playlist_3
{
       music->setPlaylist(playlist_3);
       playlist_3->setCurrentIndex( ui->listWidget->currentIndex().row());
       music->play();
}
void Widget::on_pushButton_7_clicked()//定位
{
    if(music->playlist()==playlist)
    {
        ui->stackedWidget->setCurrentIndex(0);
        pushbuttonstyle();
        ui->listWidget_3->item(playlist->currentIndex())->setSelected(true);
    }
    else if(music->playlist()==playlist_2)
    {
        ui->stackedWidget->setCurrentIndex(1);
        pushbuttonstyle_2();
        ui->listWidget_2->item(playlist_2->currentIndex())->setSelected(true);
    }
    else if(music->playlist()==playlist_3)
    {
        ui->stackedWidget->setCurrentIndex(2);
        pushbuttonstyle_3();
        ui->listWidget->item(playlist_3->currentIndex())->setSelected(true);
    }
}
void Widget::mousePressEvent(QMouseEvent *event)//拖拽
{
        offset=event->globalPos()-pos();
        event->accept();
        ui->verticalSlider->hide();
}
void Widget::mouseMoveEvent(QMouseEvent *event)//拖拽
{
 move(event->globalPos()-offset);
        event->accept();
}
void Widget::mouseReleaseEvent(QMouseEvent *event)//拖拽
{
    offset=QPoint();
    event->accept();
}
void Widget::mouseDoubleClickEvent(QMouseEvent *event)
{
    hide();
    int i;
    if(music->playlist()==playlist)
    {
        i=0;
    }
    else if(music->playlist()==playlist_2)
    {
        i=1;
    }
    else
    {
        i=2;
    }
    Music->setPlaylist(music->playlist(),music->playlist()->currentIndex(),music->position(),music->volume(),music->state(),playlist->playbackMode(),i);
    music->pause();
    if(Music->exec()==Dialog::Accepted)
    {
      show();
    }
}
void Widget::contextMenuEvent(QContextMenuEvent *event)//主窗口右键菜单
{
    menu = new QMenu(this);
    menu->addAction(action1);
    menu->addAction(action2);
    menu->addAction(action3);
    menu->addAction(action9);
    menu->addAction(action10);
    menu->addAction(action11);
    menu->addAction(ClearALL_3);
    menu->addAction(action12);
    menu->addAction(action5);
    menu->addAction(ClearALL);
    menu->addAction(detila);
    menu->addAction(action13);
    menu->exec(QCursor::pos());
}
void Widget::on_pushButton_17_clicked()//关闭
{
    close();
}
void Widget::on_pushButton_16_clicked()//最小化
{
    showMinimized();
}
void Widget::on_pushButton_8_clicked()//隐藏verticalSlider
{
if(ui->verticalSlider->isHidden())
        ui->verticalSlider->show();
else
{
    ui->verticalSlider->hide();
}
}
void Widget::changeVolume(int values)//改变音量
{
    if(values==0)
    {
        ui->pushButton_8->setIcon(QIcon(":/image/image/jy.png"));
    }
    else
    {
        ui->pushButton_8->setIcon(QIcon(":/image/image/yingliang.png"));
    }
    music->setVolume(values);
}
void Widget::on_listWidget_3_customContextMenuRequested(const QPoint &pos)//listWidget_3右键菜单
{
    QListWidgetItem *curItem=ui->listWidget_3->itemAt(pos);
    if(curItem==NULL)
    {
        return ;
    }
    QMenu *Menu=new QMenu(this);
    QAction *Action1=new QAction(this);
    QAction *Action2=new QAction(this);
    QAction *Action4=new QAction(this);
    QAction *Action3=new QAction(this);
    QAction *Action5=new QAction(this);
    Action1->setIcon(QIcon(":/image/image/bofang1.png"));
    Action1->setText(tr("播放/暂停"));
    Action2->setIcon(QIcon(":/image/image/like_outline_32px_1170275_easyicon.net.png"));
    Action2->setText(tr("添加至我喜欢"));
    Action4->setIcon(QIcon(":/image/image/list_32px_1142913_easyicon.net.png"));
    Action4->setText(tr("添加至播放队列"));
    Action3->setIcon(QIcon(":/image/image/delete_32px_1168909_easyicon.net.png"));
    Action3->setText(tr("删除"));
    Action5->setIcon(QIcon(":/image/image/inf.png"));
    Action5->setText(tr("歌曲信息"));
    Menu->addAction(Action1);
    Menu->addAction(Action2);
    Menu->addAction(Action4);
    Menu->addAction(Action5);
    Menu->addAction(Action3);
    connect(Action1,&QAction::triggered,this,&Widget::Action1_slot);
    connect(Action2,&QAction::triggered,this,&Widget::Action2_slot);
    connect(Action4,&QAction::triggered,this,&Widget::Action4_slot);
    connect(Action3,&QAction::triggered,this,&Widget::Action3_slot);
    connect(Action5,&QAction::triggered,this,&Widget::Action5_slot);
    Menu->exec(QCursor::pos());
    delete Menu;
    delete Action1;
    delete Action2;
    delete Action3;
    delete Action4;
    delete Action5;
}
void Widget::Action1_slot()//listWidget_3右键菜单 1
{
if(music->playlist()==playlist)
{
    if(ui->listWidget_3->item(playlist->currentIndex())->isSelected())
    {
        if(music->state()==QMediaPlayer::PlayingState)
        {
            music->pause();
        }
        else
        {
            music->play();
        }
    }
    else
    {
        playlist->setCurrentIndex(ui->listWidget_3->currentIndex().row());
        music->play();
    }
}
    else
    {
     music->setPlaylist(playlist);
    playlist->setCurrentIndex(ui->listWidget_3->currentIndex().row());
    music->play();
    }
}
void Widget::Action2_slot()//listWidget_3右键菜单 2
{
    model->setTable("HAHAHA");
    model->select();
    int row=ui->listWidget_3->currentIndex().row();
    int flag=model->data(model->index(row,3)).toInt();
    if(flag==0)
    {
    QString Text=ui->listWidget_3->item(row)->text();
    QListWidgetItem *ITEMM=new QListWidgetItem;
    ITEMM->setIcon(QIcon(":/image/image/like_outline_32px_1101681_easyicon.net.png"));
    ITEMM->setText(QString("%1").arg(Text));
    ui->listWidget_2->addItem(ITEMM);
    QSqlQuery query;
    playlist_2->addMedia(playlist->media(row));
    model->setTable("HAHAHA");
    model->select();
    QString MusicName=model->data(model->index(row,1)).toString();
    QString FileName=model->data(model->index(row,2)).toString();
    model->setData(model->index(row,3),1);
    model->submitAll();
    query.exec("select * from I_LIKE_DATA");
    query.exec(QString("insert into I_LIKE_DATA values (%1,'%2','%3')").arg(qrand()%10000).arg(MusicName).arg(FileName));
    ui->stackedWidget->setCurrentIndex(1);
    pushbuttonstyle_2();
    if(music->playlist()==playlist)
    {
    if(playlist->currentIndex()==row)
{
    ui->pushButton_14->setIcon(QIcon(":/image/image/like_32px_1101682_easyicon.net.png"));
    ui->pushButton_14->setToolTip(tr("我喜欢"));
}
    }
    }
    else
    {
     QMessageBox::information(this,tr("提示"),tr("该歌曲已添加                              ."),QMessageBox::Yes);
    }
}
void Widget::Action4_slot()//listWidget_3右键菜单 4
{
    int row=ui->listWidget_3->currentIndex().row();
    QString Text=ui->listWidget_3->item(row)->text();
    QListWidgetItem *ITEMM1=new QListWidgetItem;
    ITEMM1->setIcon(QIcon(":/image/image/music_not_25.570093457944px_1171234_easyicon.net.png"));
    ITEMM1->setText(QString("%1").arg(Text));
    ui->listWidget->addItem(ITEMM1);
    model->setTable("HAHAHA");
    model->select();
    playlist_3->addMedia(playlist->media(row));
    QSqlQuery query;
    QString MusicName=model->data(model->index(row,1)).toString();
    QString FileName=model->data(model->index(row,2)).toString();
    query.exec("select * from NIMA");
    query.exec(QString("insert into NIMA values (%1,'%2','%3')").arg(qrand()%10000).arg(MusicName).arg(FileName));
    ui->stackedWidget->setCurrentIndex(2);
    pushbuttonstyle_3();
}
void Widget::Action5_slot()
{
    int row=ui->listWidget_3->currentIndex().row();
    QString temp=ui->listWidget_3->currentIndex().data().toString();
    QString MusicName=temp.split(" - ").last();
    QString Author=temp.remove(" - "+MusicName);
    model->setTable("HAHAHA");
    model->select();
    QString FileName=model->data(model->index(row,2)).toString();
    QString time;
    if(music->playlist()==playlist)
    {
        if(row=playlist->currentIndex())
        {
            time=Time(music->duration());
        }
        else
        {
            time="00:00";
        }
    }
    else
    {
        time="00:00";
    }
    QMessageBox::about(this,tr("歌曲信息"),tr("歌曲名 : %1  \n"
                                             "作者 : %2 \n"
                                             "时长 : %3\n "
                                             "文件路径 : %4\n").arg(MusicName).arg(Author).arg(time).arg(FileName));
}
void Widget::Action3_slot()//listWidget_3右键菜单 3
{
if(music->playlist()==playlist)
{
    int Row=playlist->currentIndex();
    int row=ui->listWidget_3->currentIndex().row();
    if(row<Row)
    {
        int Position;
        if(music->state()==QMediaPlayer::PlayingState)
        {
            Position=music->position();
        }
        playlist->setCurrentIndex(0);
        ui->listWidget_3->takeItem(row);
        playlist->removeMedia(row,row);
        model->setTable("HAHAHA");
        model->select();
        model->removeRow(row);
        model->submitAll();
        music->setPlaylist(playlist);
        playlist->setCurrentIndex(Row-1);
        music->setPosition(Position);
        ui->horizontalSlider->setValue(Position);
        music->play();
    }
    else
    {
        ui->listWidget_3->takeItem(row);
        playlist->removeMedia(row,row);
        model->setTable("HAHAHA");
        model->select();
        model->removeRow(row);
        model->submitAll();
    }
}
else
{
    int row=ui->listWidget_3->currentIndex().row();
    ui->listWidget_3->takeItem(row);
    playlist->removeMedia(row,row);
    model->setTable("HAHAHA");
    model->select();
    model->removeRow(row);
    model->submitAll();
}
}
void Widget::on_listWidget_2_customContextMenuRequested(const QPoint &pos)//listWidget_2右键菜单
{
    QListWidgetItem *curItem1=ui->listWidget_2->itemAt(pos);
    if(curItem1==NULL)
    {
        return ;
    }
    QMenu *Menu1=new QMenu(this);
    QAction *Action1_2=new QAction(this);
    QAction *Action2_2=new QAction(this);
    QAction *Action3_2=new QAction(this);
    QAction *Action4_2=new QAction(this);
    Action1_2->setIcon(QIcon(":/image/image/bofang1.png"));
    Action1_2->setText(tr("播放/暂停"));
    Action3_2->setIcon(QIcon(":/image/image/list_32px_1142913_easyicon.net.png"));
    Action3_2->setText(tr("添加至播放队列"));
    Action2_2->setIcon(QIcon(":/image/image/delete_32px_1168909_easyicon.net.png"));
    Action2_2->setText(tr("移除"));
    Action4_2->setIcon(QIcon(":/image/image/inf.png"));
    Action4_2->setText(tr("歌曲信息"));
    Menu1->addAction(Action1_2);
    Menu1->addAction(Action3_2);
    Menu1->addAction(Action4_2);
    Menu1->addAction(Action2_2);
    connect(Action1_2,&QAction::triggered,this,&Widget::Action1_2_slot);
    connect(Action2_2,&QAction::triggered,this,&Widget::Action2_2_slot);
    connect(Action3_2,&QAction::triggered,this,&Widget::Action3_2_slot);
    connect(Action4_2,&QAction::triggered,this,&Widget::Action4_2_slot);
    Menu1->exec(QCursor::pos());
    delete Menu1;
    delete Action1_2;
    delete Action2_2;
    delete Action3_2;
    delete Action4_2;
}
void Widget::Action1_2_slot()//listWidget_2右键菜单 1
{
    if(music->playlist()==playlist_2)
    {
    if(ui->listWidget_2->item(playlist_2->currentIndex())->isSelected())
    {
        if(music->state()==QMediaPlayer::PlayingState)
        {
            music->pause();
        }
        else
        {
            music->play();
        }
    }
    else
    {
        playlist_2->setCurrentIndex(ui->listWidget_2->currentIndex().row());
        music->play();
    }
    }
    else
    {
        music->setPlaylist(playlist_2);
    playlist_2->setCurrentIndex(ui->listWidget_2->currentIndex().row());
    music->play();
    }
}
void Widget::Action3_2_slot()
{
    int row=ui->listWidget_2->currentIndex().row();
    QString Text=ui->listWidget_2->item(row)->text();
    QListWidgetItem *ITEMM1=new QListWidgetItem;
    ITEMM1->setIcon(QIcon(":/image/image/music_not_25.570093457944px_1171234_easyicon.net.png"));
    ITEMM1->setText(QString("%1").arg(Text));
    ui->listWidget->addItem(ITEMM1);
    model_2->setTable("I_LIKE_DATA");
    model_2->select();
    playlist_3->addMedia(playlist_2->media(row));
    QSqlQuery query;
    QString MusicName=model_2->data(model_2->index(row,1)).toString();
    QString FileName=model_2->data(model_2->index(row,2)).toString();
    query.exec("select * from NIMA");
    query.exec(QString("insert into NIMA values (%1,'%2','%3')").arg(qrand()%10000).arg(MusicName).arg(FileName));
    ui->stackedWidget->setCurrentIndex(2);
    pushbuttonstyle_3();
}
void Widget::Action4_2_slot()
{
    int row=ui->listWidget_2->currentIndex().row();
    QString temp=ui->listWidget_2->currentIndex().data().toString();
    QString MusicName=temp.split(" - ").last();
    QString Author=temp.remove(" - "+MusicName);
    model_2->setTable("I_LIKE_DATA");
    model_2->select();
    QString FileName=model_2->data(model_2->index(row,2)).toString();
    QString time;
    if(music->playlist()==playlist_2)
    {
        if(row=playlist_2->currentIndex())
        {
            time=Time(music->duration());
        }
        else
        {
            time="00:00";
        }
    }
    else
    {
        time="00:00";
    }
    QMessageBox::about(this,tr("歌曲信息"),tr("歌曲名 : %1  \n"
                                             "作者 : %2 \n"
                                             "时长 : %3 \n"
                                             "文件路径 : %4\n").arg(MusicName).arg(Author).arg(time).arg(FileName));
}
void Widget::Action2_2_slot()//listWidget_2右键菜单 2
{
    QString MusicName=ui->listWidget_2->currentItem()->text();
    if(music->playlist()==playlist_2)
    {
        int Row=playlist_2->currentIndex();
        int row=ui->listWidget_2->currentIndex().row();
        if(row<Row)
        {
            int Position;
            if(music->state()==QMediaPlayer::PlayingState)
            {
                Position=music->position();
            }
            playlist_2->setCurrentIndex(0);
            ui->listWidget_2->takeItem(row);
            playlist_2->removeMedia(row,row);
            model_2->setTable("I_LIKE_DATA");
            model_2->select();
            model_2->removeRow(row);
            model_2->submitAll();
            music->setPlaylist(playlist_2);
            playlist_2->setCurrentIndex(Row-1);
            music->setPosition(Position);
            ui->horizontalSlider->setValue(Position);
            music->play();
        }
        else
        {
            ui->listWidget_2->takeItem(row);
            playlist_2->removeMedia(row,row);
            model_2->setTable("I_LIKE_DATA");
            model_2->select();
            model_2->removeRow(row);
            model_2->submitAll();
        }
    }
    else
    {
        int row=ui->listWidget_2->currentIndex().row();
        ui->listWidget_2->takeItem(row);
        playlist_2->removeMedia(row,row);
        model_2->setTable("I_LIKE_DATA");
        model_2->select();
        model_2->removeRow(row);
        model_2->submitAll();
    }
    QSqlQuery query;
    query.exec("select * from HAHAHA");
    query.prepare(QString("update HAHAHA set biaoji = ? where MusicName = '%1' ").arg(MusicName));
    query.bindValue(0,0);
    query.exec();
}
void Widget::on_listWidget_customContextMenuRequested(const QPoint &pos)//listWidget右键菜单
{
    QListWidgetItem *curItem2=ui->listWidget->itemAt(pos);
    if(curItem2==NULL)
    {
        return ;
    }
    QMenu *Menu2=new QMenu(this);
    QAction *Action1_3=new QAction(this);
    QAction *Action3_3=new QAction(this);
    QAction *Action2_3=new QAction(this);
    Action1_3->setIcon(QIcon(":/image/image/bofang1.png"));
    Action1_3->setText(tr("播放/暂停"));
    Action2_3->setIcon(QIcon(":/image/image/delete_32px_1168909_easyicon.net.png"));
    Action2_3->setText(tr("移除"));
    Action3_3->setIcon(QIcon(":/image/image/inf.png"));
    Action3_3->setText(tr("歌曲信息"));
    Menu2->addAction(Action1_3);
    Menu2->addAction(Action3_3);
    Menu2->addAction(Action2_3);
    connect(Action1_3,&QAction::triggered,this,&Widget::Action1_3_slot);
    connect(Action2_3,&QAction::triggered,this,&Widget::Action2_3_slot);
    connect(Action3_3,&QAction::triggered,this,&Widget::Action3_3_slot);
    Menu2->exec(QCursor::pos());
    delete Menu2;
    delete Action1_3;
    delete Action2_3;
}
void Widget::Action1_3_slot()//listWidget右键菜单 1
{
    if(music->playlist()==playlist_3)
    {
    if(ui->listWidget->item(playlist_3->currentIndex())->isSelected())
    {
        if(music->state()==QMediaPlayer::PlayingState)
        {
            music->pause();
        }
        else
        {
            music->play();
        }
    }
    else
    {
        playlist_3->setCurrentIndex(ui->listWidget->currentIndex().row());
        music->play();
    }
    }
    else
    {
        music->setPlaylist(playlist_3);
    playlist_3->setCurrentIndex(ui->listWidget->currentIndex().row());
    music->play();
    }
}
void Widget::Action3_3_slot()
{
    int row=ui->listWidget->currentIndex().row();
    QString temp=ui->listWidget->currentIndex().data().toString();
    QString MusicName=temp.split(" - ").last();
    QString Author=temp.remove(" - "+MusicName);
    model_3->setTable("NIMA");
    model_3->select();
    QString FileName=model_3->data(model_3->index(row,2)).toString();
    QString time;
    if(music->playlist()==playlist_3)
    {
        if(row=playlist_3->currentIndex())
        {
            time=Time(music->duration());
        }
        else
        {
            time="00:00";
        }
    }
    else
    {
        time="00:00";
    }
    QMessageBox::about(this,tr("歌曲信息"),tr("歌曲名 : %1  \n"
                                             "作者 : %2 \n"
                                             "时长 : %3 \n"
                                             "文件路径 : %4\n").arg(MusicName).arg(Author).arg(time).arg(FileName));
}
void Widget::Action2_3_slot()//listWidget右键菜单 2
{
    if(music->playlist()==playlist_3)
    {
        int Row=playlist_3->currentIndex();
        int row=ui->listWidget->currentIndex().row();
        if(row<Row)
        {
            int Position;
            if(music->state()==QMediaPlayer::PlayingState)
            {
                Position=music->position();
            }
            playlist_3->setCurrentIndex(0);
            ui->listWidget->takeItem(row);
            playlist_3->removeMedia(row,row);
            model_3->setTable("NIMA");
            model_3->select();
            model_3->removeRow(row);
            model_3->submitAll();
            music->setPlaylist(playlist_3);
            playlist_3->setCurrentIndex(Row-1);
            music->setPosition(Position);
            ui->horizontalSlider->setValue(Position);
            music->play();
        }
        else
        {
            ui->listWidget->takeItem(row);
            playlist_3->removeMedia(row,row);
            model_3->setTable("NIMA");
            model_3->select();
            model_3->removeRow(row);
            model_3->submitAll();
        }
    }
    else
    {
        int row=ui->listWidget->currentIndex().row();
        ui->listWidget->takeItem(row);
        playlist_3->removeMedia(row,row);
        model_3->setTable("NIMA");
        model_3->select();
        model_3->removeRow(row);
        model_3->submitAll();
    }
}
void Widget::on_pushButton_13_clicked()
{
    hide();
    int i;
    if(music->playlist()==playlist)
    {
        i=0;
    }
    else if(music->playlist()==playlist_2)
    {
        i=1;
    }
    else
    {
        i=2;
    }
    Music->setPlaylist(music->playlist(),music->playlist()->currentIndex(),music->position(),music->volume(),music->state(),playlist->playbackMode(),i);
    music->pause();
    if(Music->exec()==Dialog::Accepted)
    {
        show();
    }
}
void Widget::Data_slot(int row,int position,QMediaPlaylist *list,QMediaPlayer::State state,QMediaPlaylist::PlaybackMode model)
{
    playlist->setPlaybackMode(model);
    playlist_2->setPlaybackMode(model);
    playlist_3->setPlaybackMode(model);
    if(list==playlist)
    {
        playlist->setCurrentIndex(row);
        music->setPosition(position);
        if(state==QMediaPlayer::PlayingState)
        music->play();
    }
    else  if(list==playlist)
    {
        playlist_2->setCurrentIndex(row);
        music->setPosition(position);
        if(state==QMediaPlayer::PlayingState)
        music->play();
    }
    else
    {
       playlist_3->setCurrentIndex(row);
       music->setPosition(position);
       if(state==QMediaPlayer::PlayingState)
       music->play();
    }
}
void Widget::on_pushButton_14_clicked()
{
    if(music->playlist()==playlist)
    {
        int row=playlist->currentIndex();
        model->setTable("HAHAHA");
        model->select();
        int flag=model->data(model->index(row,3)).toInt();
        if(flag==0)
        {
            ui->pushButton_14->setIcon(QIcon(":/image/image/like_32px_1101682_easyicon.net.png"));
            ui->pushButton_14->setToolTip(tr("我喜欢"));
            int row=playlist->currentIndex();
            QString Text=ui->listWidget_3->item(row)->text();
            QListWidgetItem *ITEMM2=new QListWidgetItem;
            ITEMM2->setIcon(QIcon(":/image/image/like_outline_32px_1101681_easyicon.net.png"));
            ITEMM2->setText(QString("%1").arg(Text));
            ui->listWidget_2->addItem(ITEMM2);
            playlist_2->addMedia(playlist->media(row));
            QSqlQuery query;
            model->setTable("HAHAHA");
            model->select();
            QString MusicName=model->data(model->index(row,1)).toString();
            QString FileName=model->data(model->index(row,2)).toString();
            model->setData(model->index(row,3),1);
            model->submitAll();
            query.exec("select * from I_LIKE_DATA");
            query.exec(QString("insert into I_LIKE_DATA values (%1,'%2','%3')").arg(qrand()%10000).arg(MusicName).arg(FileName));
        }
    }
}
void Widget::on_pushButton_18_clicked()
{
    QString text=ui->lineEdit->text();
    if(text!="")
    {
    load.clear();
    ui->listWidget_4->clear();
   std::string MusicName=ui->lineEdit->text().toStdString();
   const char* MusicName1=MusicName.c_str();
   ui->stackedWidget->setCurrentIndex(3);
   int Count=ui->listWidget_3->count();
   pushbuttonstyle_4();
   for(int i=0;i<Count;i++)
   {
       QString Text=ui->listWidget_3->item(i)->text();
       QString Name=Text.split("- ").last();
       std::string Name1=Name.toStdString();
       const  char *Name2=Name1.c_str();
       QString Author=Text.remove(" - "+Name);
       std::string Author1=Author.toStdString();
       const char *Author2=Author1.c_str();
       if(strstr(Name2,MusicName1)||strstr(Author2,MusicName1))
       {
        QString Text=ui->listWidget_3->item(i)->text();
        QListWidgetItem *item20=new QListWidgetItem;
        item20->setIcon(QIcon(":/image/image/sss.png"));
        item20->setText(Text);
        ui->listWidget_4->addItem(item20);
        load.push_back(i);
       }
   }
   ui->lineEdit->clear();
}
}
void Widget::on_listWidget_4_doubleClicked(const QModelIndex &index)
{
    music->setPlaylist(playlist);
    playlist->setCurrentIndex(load[ui->listWidget_4->currentIndex().row()]);
    music->play();
}
void Widget::on_listWidget_4_customContextMenuRequested(const QPoint &pos)
{
    QListWidgetItem *ITEM20=ui->listWidget_4->itemAt(pos);
    if(ITEM20==NULL)
    {
        return ;
    }
    QMenu *MENU20=new QMenu(this);
    QAction *Action =new QAction(this);
    QAction *Action1 =new QAction(this);
    QAction *Action2 =new QAction(this);
    QAction *Action3 =new QAction(this);
    QAction *Action4 =new QAction(this);
    Action->setIcon(QIcon(":/image/image/bofang1.png"));
    Action->setText(tr("播放/暂停"));
    Action1->setIcon(QIcon(":/image/image/like_outline_32px_1101681_easyicon.net.png"));
    Action1->setText(tr("添加至我喜欢"));
    Action2->setIcon(QIcon(":/image/image/list_32px_1074296_easyicon.net.png"));
    Action2->setText(tr("添加至播放队列"));
    Action3->setIcon(QIcon(":/image/image/delete_32px_1168909_easyicon.net.png"));
    Action3->setText(tr("删除歌曲"));
    Action4->setIcon(QIcon(":/image/image/inf.png"));
    Action4->setText(tr("歌曲信息"));
    connect(Action,&QAction::triggered,this,&Widget::Action_slot);
    connect(Action1,&QAction::triggered,this,&Widget::Action_1_slot);
    connect(Action2,&QAction::triggered,this,&Widget::Action_2_slot);
    connect(Action3,&QAction::triggered,this,&Widget::Action_3_slot);
    connect(Action4,&QAction::triggered,this,&Widget::Action_4_slot);
    MENU20->addAction(Action);
    MENU20->addAction(Action1);
    MENU20->addAction(Action2);
    MENU20->addAction(Action4);
    MENU20->addAction(Action3);
    MENU20->exec(QCursor::pos());
    delete Action;
    delete Action1;
    delete Action2;
    delete Action3;
    delete Action4;
    delete MENU20;
}
void Widget::Action_slot()
{
    int row=ui->listWidget_4->currentIndex().row();
    if(music->playlist()==playlist)
    {
        if(load[row]==playlist->currentIndex())
        {
            if(music->state()==QMediaPlayer::PlayingState)
            {
                music->pause();
            }
            else
            {
                music->play();
            }
        }
        else
        {
            playlist->setCurrentIndex(load[row]);
            music->play();
            ui->listWidget_3->item(load[row])->setSelected(true);
        }
    }
        else
        {
         music->setPlaylist(playlist);
         playlist->setCurrentIndex(load[row]);
         music->play();
        }
}
void Widget::Action_1_slot()
{
    model->setTable("HAHAHA");
    model->select();
    int row=ui->listWidget_4->currentIndex().row();
    int flag=model->data(model->index(load[row],3)).toInt();
    if(flag==0)
    {
    QString Text=ui->listWidget_3->item(load[row])->text();
    QListWidgetItem *ITEMM=new QListWidgetItem;
    ITEMM->setIcon(QIcon(":/image/image/like_outline_32px_1101681_easyicon.net.png"));
    ITEMM->setText(QString("%1").arg(Text));
    ui->listWidget_2->addItem(ITEMM);
    QSqlQuery query;
    playlist_2->addMedia(playlist->media(load[row]));
    model->setTable("HAHAHA");
    model->select();
    QString MusicName=model->data(model->index(load[row],1)).toString();
    QString FileName=model->data(model->index(load[row],2)).toString();
    model->setData(model->index(load[row],3),1);
    model->submitAll();
    query.exec("select * from I_LIKE_DATA");
    query.exec(QString("insert into I_LIKE_DATA values (%1,'%2','%3')").arg(qrand()%10000).arg(MusicName).arg(FileName));
    ui->stackedWidget->setCurrentIndex(1);
    pushbuttonstyle_2();
    if(music->playlist()==playlist)
    {
    if(playlist->currentIndex()==load[row])
    {
    ui->pushButton_14->setIcon(QIcon(":/image/image/like_32px_1101682_easyicon.net.png"));
    ui->pushButton_14->setToolTip(tr("我喜欢"));
    }
    }
    }
    else
    {
     QMessageBox::information(this,tr("提示"),tr("该歌曲已添加                              ."),QMessageBox::Yes);
    }
}
void Widget::Action_2_slot()
{
    int row=ui->listWidget_4->currentIndex().row();
    QString Text=ui->listWidget_3->item(load[row])->text();
    QListWidgetItem *ITEMM1=new QListWidgetItem;
    ITEMM1->setIcon(QIcon(":/image/image/music_not_25.570093457944px_1171234_easyicon.net.png"));
    ITEMM1->setText(QString("%1").arg(Text));
    ui->listWidget->addItem(ITEMM1);
    model->setTable("HAHAHA");
    model->select();
    playlist_3->addMedia(playlist->media(load[row]));
    QSqlQuery query;
    QString MusicName=model->data(model->index(load[row],1)).toString();
    QString FileName=model->data(model->index(load[row],2)).toString();
    query.exec("select * from NIMA");
    query.exec(QString("insert into NIMA values (%1,'%2','%3')").arg(qrand()%10000).arg(MusicName).arg(FileName));
    ui->stackedWidget->setCurrentIndex(2);
    pushbuttonstyle_3();
}
void Widget::Action_4_slot()
{
    int row=ui->listWidget_4->currentIndex().row();
    QString temp=ui->listWidget_4->currentIndex().data().toString();
    QString MusicName=temp.split(" - ").last();
    QString Author=temp.remove(" - "+MusicName);
    model->setTable("HAHAHA");
    model->select();
    QString FileName=model->data(model->index(load[row],2)).toString();
    QString time;
    if(music->playlist()==playlist)
    {
        if(load[row]=playlist->currentIndex())
        {
            time=Time(music->duration());
        }
        else
        {
            time="00:00";
        }
    }
    else
    {
        time="00:00";
    }
    QMessageBox::about(this,tr("歌曲信息"),tr("歌曲名 : %1  \n"
                                             "作者 : %2 \n"
                                             "时长 : %3 \n"
                                             "文件路径 : %4\n").arg(MusicName).arg(Author).arg(time).arg(FileName));
}
void Widget::Action_3_slot()
{
    if(music->playlist()==playlist)
    {
        int Row=playlist->currentIndex();
        int row=ui->listWidget_4->currentIndex().row();
        if(load[row]<Row)
        {
            int Position;
            if(music->state()==QMediaPlayer::PlayingState)
            {
                Position=music->position();
            }
            playlist->setCurrentIndex(0);
            ui->listWidget_3->takeItem(load[row]);
            ui->listWidget_4->takeItem(row);
            playlist->removeMedia(load[row],load[row]);
            model->setTable("HAHAHA");
            model->select();
            model->removeRow(load[row]);
            model->submitAll();
            music->setPlaylist(playlist);
            playlist->setCurrentIndex(Row-1);
            music->setPosition(Position);
            ui->horizontalSlider->setValue(Position);
            music->play();
        }
        else
        {
            ui->listWidget_4->takeItem(row);
            ui->listWidget_3->takeItem(load[row]);
            playlist->removeMedia(load[row],load[row]);
            model->setTable("HAHAHA");
            model->select();
            model->removeRow(load[row]);
            model->submitAll();
        }
    }
    else
    {
        int row=ui->listWidget_4->currentIndex().row();
        ui->listWidget_4->takeItem(row);
        ui->listWidget_3->takeItem(load[row]);
        playlist->removeMedia(load[row],load[row]);
        model->setTable("HAHAHA");
        model->select();
        model->removeRow(load[row]);
        model->submitAll();
    }
}
void Widget::CreateSortCut()
{
    QShortcut *QUIT=new QShortcut(QKeySequence::Quit,this);
    connect(QUIT,&QShortcut::activated,QCoreApplication::quit);
    QShortcut *play=new QShortcut(Qt::Key_Space,this);
    connect(play,&QShortcut::activated,this,&Widget::action11_slot);
    QShortcut *next=new QShortcut(Qt::Key_Right,this);
    QShortcut *next1=new QShortcut(Qt::Key_6,this);
    connect(next,&QShortcut::activated,this,&Widget::Next_slot);
    connect(next1,&QShortcut::activated,this,&Widget::Next_slot);
    QShortcut *pre=new QShortcut(Qt::Key_Left,this);
    QShortcut *pre1=new QShortcut(Qt::Key_4,this);
    connect(pre,&QShortcut::activated,this,&Widget::Pre_slot);
    connect(pre1,&QShortcut::activated,this,&Widget::Pre_slot);
    QShortcut *nextlist=new QShortcut(Qt::Key_D,this);
    connect(nextlist,&QShortcut::activated,this,&Widget::nextlist_slot);
    QShortcut *prelist=new QShortcut(Qt::Key_A,this);
    connect(prelist,&QShortcut::activated,this,&Widget::prelist_slot);
    QShortcut *addV=new QShortcut(Qt::Key_W,this);
    connect(addV,&QShortcut::activated,this,&Widget::addV_slot);
    QShortcut *subV=new QShortcut(Qt::Key_S,this);
    connect(subV,&QShortcut::activated,this,&Widget::subV_slot);
    QShortcut *Locole=new QShortcut(Qt::Key_Q,this);
    connect(Locole,&QShortcut::activated,this,&Widget::Locale_slot);
    QShortcut *change=new QShortcut(Qt::Key_E,this);
    connect(change,&QShortcut::activated,this,&Widget::change_slot);
    QShortcut *love=new QShortcut(Qt::Key_R,this);
    connect(love,&QShortcut::activated,this,&Widget::love_slot);
}
void Widget::Next_slot()
{
    if(music->playlist()==playlist)
     {
        int currentIndex=playlist->currentIndex();
        ui->stackedWidget->setCurrentIndex(0);
        pushbuttonstyle();
        if(++currentIndex==playlist->mediaCount())
        {
            currentIndex=0;
        }
        playlist->setCurrentIndex(currentIndex);
    }
    else if(music->playlist()==playlist_2)
    {
        int currentIndex=playlist_2->currentIndex();
        ui->stackedWidget->setCurrentIndex(1);
        pushbuttonstyle_2();
        if(++currentIndex==playlist_2->mediaCount())
        {
            currentIndex=0;
        }
        playlist_2->setCurrentIndex(currentIndex);
    }
    else if(music->playlist()==playlist_3)
    {
        int currentIndex=playlist_3->currentIndex();
        ui->stackedWidget->setCurrentIndex(2);
        pushbuttonstyle_3();
        if(++currentIndex==playlist_3->mediaCount())
        {
            currentIndex=0;
        }
        playlist_3->setCurrentIndex(currentIndex);
    }
    music->play();
}
void Widget::Pre_slot()
{
    if(music->playlist()==playlist)
    {
        int currentIndex=playlist->currentIndex();
        ui->stackedWidget->setCurrentIndex(0);
        pushbuttonstyle();
        if(--currentIndex<0)
        {
            currentIndex=0;
        }
       playlist->setCurrentIndex(currentIndex);
    }
    else if(music->playlist()==playlist_2)
    {
        int currentIndex=playlist_2->currentIndex();
        ui->stackedWidget->setCurrentIndex(1);
        pushbuttonstyle_2();
        if(--currentIndex<0)
        {
            currentIndex=0;
        }
        playlist_2->setCurrentIndex(currentIndex);
    }
    else if(music->playlist()==playlist_3)
    {
        int currentIndex=playlist_3->currentIndex();
        ui->stackedWidget->setCurrentIndex(2);
        pushbuttonstyle_3();
        if(--currentIndex<0)
        {
            currentIndex=0;
        }
        playlist_3->setCurrentIndex(currentIndex);
    }
     music->play();
}
void Widget::nextlist_slot()
{
    int current=ui->stackedWidget->currentIndex();
    if(current<2)
    {
        current++;
        ui->stackedWidget->setCurrentIndex(current);
        if(current==0)
        {
            pushbuttonstyle();
        }
        else if(current==1)
        {
            pushbuttonstyle_2();
        }
        else
        {
            pushbuttonstyle_3();
        }
    }
}
void Widget::prelist_slot()
{
    int current=ui->stackedWidget->currentIndex();
    if(current>0)
    {
        current--;
        ui->stackedWidget->setCurrentIndex(current);
        if(current==0)
        {
            pushbuttonstyle();
        }
        else if(current==1)
        {
            pushbuttonstyle_2();
        }
        else
        {
            pushbuttonstyle_3();
        }
    }
}
void Widget::addV_slot()
{
    ui->verticalSlider->show();
    int values=ui->verticalSlider->value();
    if(values<100)
    {
        values++;
        ui->verticalSlider->setValue(values);
    }
}
void Widget::subV_slot()
{
    ui->verticalSlider->show();
    int values=ui->verticalSlider->value();
    if(values>0)
    {
        values--;
        ui->verticalSlider->setValue(values);
    }
}
void Widget::Locale_slot()
{
    if(music->playlist()==playlist)
    {
        ui->stackedWidget->setCurrentIndex(0);
        pushbuttonstyle();
        ui->listWidget_3->item(playlist->currentIndex())->setSelected(true);
    }
    else if(music->playlist()==playlist_2)
    {
        ui->stackedWidget->setCurrentIndex(1);
        pushbuttonstyle_2();
        ui->listWidget_2->item(playlist_2->currentIndex())->setSelected(true);
    }
    else if(music->playlist()==playlist_3)
    {
        ui->stackedWidget->setCurrentIndex(2);
        pushbuttonstyle_3();
        ui->listWidget->item(playlist_3->currentIndex())->setSelected(true);
    }
}
void Widget::change_slot()
{
    count2++;
    if(count2%3==1)
    {
        ui->pushButton_9->setIcon(QIcon(":/image/image/player-icons_32px_1137005_easyicon.net.png"));
        ui->pushButton_9->setToolTip(tr("随机播放"));
        playlist->setPlaybackMode(QMediaPlaylist::Random);
        playlist_2->setPlaybackMode(QMediaPlaylist::Random);
        playlist_3->setPlaybackMode(QMediaPlaylist::Random);
    }
    else if(count2%3==2)
    {
        ui->pushButton_9->setIcon(QIcon(":/image/image/player-icons_32px_1137006_easyicon.net.png"));
        ui->pushButton_9->setToolTip(tr("单曲循环"));
        playlist->setPlaybackMode(QMediaPlaylist::CurrentItemInLoop);
        playlist_2->setPlaybackMode(QMediaPlaylist::CurrentItemInLoop);
        playlist_3->setPlaybackMode(QMediaPlaylist::CurrentItemInLoop);
    }
    else
    {
        ui->pushButton_9->setIcon(QIcon(":/image/image/player-icons_32px_1137007_easyicon.net.png"));
        ui->pushButton_9->setToolTip(tr("顺序播放"));
        playlist->setPlaybackMode(QMediaPlaylist::Loop);
        playlist_2->setPlaybackMode(QMediaPlaylist::Loop);
        playlist_3->setPlaybackMode(QMediaPlaylist::Loop);
    }
}
void Widget::love_slot()
{
    if(music->playlist()==playlist)
    {
        int row=playlist->currentIndex();
        model->setTable("HAHAHA");
        model->select();
        int flag=model->data(model->index(row,3)).toInt();
        if(flag==0)
        {
            ui->pushButton_14->setIcon(QIcon(":/image/image/like_32px_1101682_easyicon.net.png"));
            ui->pushButton_14->setToolTip(tr("我喜欢"));
            int row=playlist->currentIndex();
            QString Text=ui->listWidget_3->item(row)->text();
            QListWidgetItem *ITEMM2=new QListWidgetItem;
            ITEMM2->setIcon(QIcon(":/image/image/like_outline_32px_1101681_easyicon.net.png"));
            ITEMM2->setText(QString("%1").arg(Text));
            ui->listWidget_2->addItem(ITEMM2);
            playlist_2->addMedia(playlist->media(row));
            QSqlQuery query;
            model->setTable("HAHAHA");
            model->select();
            QString MusicName=model->data(model->index(row,1)).toString();
            QString FileName=model->data(model->index(row,2)).toString();
            model->setData(model->index(row,3),1);
            model->submitAll();
            query.exec("select * from I_LIKE_DATA");
            query.exec(QString("insert into I_LIKE_DATA values (%1,'%2','%3')").arg(qrand()%10000).arg(MusicName).arg(FileName));
        }
    }
}
void Widget::on_lineEdit_returnPressed()
{
    QString text=ui->lineEdit->text();
    if(text!="")
    {
        load.clear();
    ui->listWidget_4->clear();
   std::string MusicName=ui->lineEdit->text().toStdString();
   const char* MusicName1=MusicName.c_str();
   ui->stackedWidget->setCurrentIndex(3);
   int Count=ui->listWidget_3->count();
   pushbuttonstyle_4();
   for(int i=0;i<Count;i++)
   {
       QString Text=ui->listWidget_3->item(i)->text();
       QString Name=Text.split("- ").last();
       std::string Name1=Name.toStdString();
       const  char *Name2=Name1.c_str();
       QString Author=Text.remove(" - "+Name);
       std::string Author1=Author.toStdString();
       const char *Author2=Author1.c_str();
       qDebug()<<Name;
       qDebug()<<Author;
       if(strstr(Name2,MusicName1)||strstr(Author2,MusicName1))
       {
        QString Text=ui->listWidget_3->item(i)->text();
        QListWidgetItem *item20=new QListWidgetItem;
        item20->setIcon(QIcon(":/image/image/sss.png"));
        item20->setText(Text);
        ui->listWidget_4->addItem(item20);
        load.push_back(i);
       }
   }
   ui->lineEdit->clear();
    }
}
void Widget::PlaylistModel_slot(QMediaPlaylist::PlaybackMode model)
{
    if(model==QMediaPlaylist::Loop)
    {
        ui->pushButton_9->setIcon(QIcon(":/image/image/player-icons_32px_1137007_easyicon.net.png"));
        ui->pushButton_9->setToolTip(tr("顺序播放"));
    }
    else if(model==QMediaPlaylist::Random)
    {
        ui->pushButton_9->setIcon(QIcon(":/image/image/player-icons_32px_1137005_easyicon.net.png"));
        ui->pushButton_9->setToolTip(tr("随机播放"));
    }
    else if(model==QMediaPlaylist::CurrentItemInLoop)
    {
        ui->pushButton_9->setIcon(QIcon(":/image/image/player-icons_32px_1137006_easyicon.net.png"));
        ui->pushButton_9->setToolTip(tr("单曲循环"));
        playlist->setPlaybackMode(QMediaPlaylist::CurrentItemInLoop);
    }
}