QT5音乐播放器

QT实现MP3音乐播放器

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


先上图看看效果

QT5音乐播放器_第1张图片

QT5音乐播放器_第2张图片

QT5音乐播放器_第3张图片

下面看代码:

代码块

代码块语法遵循标准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

你可能感兴趣的:(QT5音乐播放器)