QT5音乐播放器

来源:互联网 发布:解矩阵方程ax b x 编辑:程序博客网 时间:2024/05/29 18:45

QT实现MP3音乐播放器

该MP3播放器实现了界面的美化,整个界面主要是一张背景图,是我用ps做出来的,还有每一个按钮都是先实例化一个按钮部件并用setGeometry()函数设置位置,然后设置按钮的背景,就实现了如上的效果。


先上图看看效果

这里写图片描述

这里写图片描述

这里写图片描述

下面看代码:

代码块

代码块语法遵循标准markdown代码,例如:

打开音乐void Music::addOnemusic(){    QString fileName = QFileDialog::getOpenFileName(this, tr("打开文件"),"/home",tr("music(*.mp3)"));    if(!fileName.isEmpty())    {         add = true;//判断是否成功打开音乐文件    }    playList -> addMedia(QUrl::fromLocalFile(fileName));//将打开的音乐文件加入到播放列表    playList->setCurrentIndex(0);    playList->setPlaybackMode(QMediaPlaylist::Loop);//设置播放模式    player -> setPlaylist(playList);    message -> setText("成功添加1首音乐");    connect(timer2, SIGNAL(timeout()), this, SLOT(clearMessage()));     timer2 ->start(5000);//5秒钟后将message的文本清空,即通知消失}void Music::addMoremusic(){    QStringList fileNames = QFileDialog::getOpenFileNames(this, tr("打开文件"),"/home",tr("music(*.mp3)"));    if(!fileNames.isEmpty())    {        add = true;//同上    }    for(int i = 0; i < fileNames.size(); i ++)    {        playList -> addMedia(QUrl::fromLocalFile(fileNames.at(i)));//将音乐文件逐一加入到播放列表    }    playList->setCurrentIndex(0);    playList->setPlaybackMode(QMediaPlaylist::Loop);    player -> setPlaylist(playList);    message -> setText(tr("成功添加")+fileNames.size()+tr("音乐"));    connect(timer2, SIGNAL(timeout()), this, SLOT(clearMessage()));    timer2 ->start(5000);//同上}播放和暂停功能void Music::playMusic(){    isplay = !isplay;    if(!add)    {        QMessageBox::information(this,"添加音乐","请先添加音乐","确定");    }    else    {        if(player -> state() == QMediaPlayer::PlayingState)//判断是否为播放模式        {            //设置播放模式为暂停            player -> pause();            //改变播放按钮的背景图片            BtnPlay->setStyleSheet("QPushButton:!hover{border-image: url(:/image/play_hover.png);}"                                   "QPushButton:hover{border-image: url(:/image/play_hover.png);}"                                   "QPushButton:pressed{border-image: url(:/image/play_press.png);}"                                   /*"QPushButton:focus{padding:-1;}"*/);        }        else        {            //否则设置播放模式            player -> play();            BtnPlay->setStyleSheet("QPushButton:!hover{border-image: url(:/image/pause_hover.png);}"                                   "QPushButton:hover{border-image: url(:/image/pause_hover.png);}"                                   "QPushButton:pressed{border-image: url(:/image/pause_press.png);}"                                   /*"QPushButton:focus{padding:-1;}"*/);        }    }    //判断暂停模式,改变播放时间    if(isplay)    {        connect(timer, SIGNAL(timeout()), this, SLOT(posChange()));        timer->start(1000);    }    else    {        timer ->stop();    }}上一首和下一首void Music::preMusic(){    //上一首,并更新播放时间为0    moved = 0;    playList ->previous();}void Music::nextMusic(){    //下一首,更新播放时间为0    moved = 0;    playList->next();}设置音量connect(volumeControl, SIGNAL(sliderMoved(int)), this, SLOT(volumChange(int)));void Music::volumChange(int vol){    //关联滑块的移动,将值设置播放的音量    player -> setVolume(vol);}静音void Music::meteOpen(){    static bool flag=true;//判断是否已点击    if(flag){        //如果点下小喇叭,则改变小喇叭按钮的背景图像        muteButton->setStyleSheet("QPushButton:!hover{border-image: url(:/image/sound_close.png)}"                                  "QPushButton:hover{border-image: url(:/image/sound_close.png)}"                                  "QPushButton:pressed{border-image: url(:/image/sound_close.png)}"                                  "QPushButton:focus{padding:-1;}");        muteButton->setToolTip(tr("打开声音"));        player -> setMuted(true);//打开声音    }else{        muteButton->setStyleSheet("QPushButton:!hover{border-image: url(:/image/sound.png)}"                                  "QPushButton:hover{border-image: url(:/image/sound.png)}"                                  "QPushButton:pressed{border-image: url(:/image/sound.png)}"                                  "QPushButton:focus{padding:-1;}");        muteButton->setToolTip(tr("关闭声音"));        player -> setMuted(false);//关闭声音    }    flag=!flag;}播放进度void Music::positionChange(qint64 position){    seekSlider->setMaximum(player->duration() / 1000);//设置滑块的长度范围为音乐长度    seekSlider->setValue(position / 1000);//如果音乐进度改变,则改变滑块显示位置}void Music::seekChange(int position){    player -> setPosition(position * 1000);//如果滑块改变位置,则改变音乐进度}connect(seekSlider,SIGNAL(sliderMoved(int)), this,SLOT(seekChange(int))); connect(player,SIGNAL(positionChanged(qint64)),this,SLOT( positionChange(qint64)));... prompt'''

脚注

该程序QT5.6版本编写的,windows7平台下运行,其他平台下运行可能会出现问题,有什么不足的地方请多多指教。
下面附上源代码:
链接:http://pan.baidu.com/s/1dE8yhln 密码:42yl

原创粉丝点击