Qt入门小项目 超详细注释 附源码

音乐盒

一,系统功能

(1)暂停、播放音乐

(2)上、下切换音乐

(3)滑动调节音量

(4)定时切换名人名言

(5)显示时间(年月日,时分秒,周几)

注:效果图如下

Qt入门小项目 超详细注释 附源码_第1张图片

二,项目涉及:

1,QPushButton

2,QMediaPlayer

3,QMediaPlaylist

4,QTimer,

5,QDateTime

6,Ui设计

三,UI部分

1,整体布局

Qt入门小项目 超详细注释 附源码_第2张图片

2,布局嵌套

Qt入门小项目 超详细注释 附源码_第3张图片

3,对象嵌套

Qt入门小项目 超详细注释 附源码_第4张图片

4,stackedWidget内部

Qt入门小项目 超详细注释 附源码_第5张图片

 

四,附源代码

1,获取源码:

链接:https://pan.baidu.com/s/1zvrH5Ax3lzj8IaSd-XH-XQ 
提取码:n62n

 2,关键代码(music.cpp)

#include "music.h"
#include "ui_music.h"//ui界面设计
#include"QPushButton"//按钮头文件
#include"QMediaPlayer"//音视频播放器头文件
#include"QMediaPlaylist"//媒体文件头文件
#include//计时器头文件
#include//时间的头文件


Music::Music(QWidget *parent):
    QWidget(parent),
    ui(new Ui::Music)
{
    ui->setupUi(this);



    //新建播放器
    QMediaPlayer *player = new QMediaPlayer;
    //新建音乐列表
    QMediaPlaylist *list = new QMediaPlaylist;

    //添加音乐列表,把喜欢的歌曲添加到此处,直接从资源文件里面复制地址
    list->addMedia(QMediaContent(QUrl("qrc:/res/Taylor Swift - Love Story.mp3")));
    list->addMedia(QMediaContent(QUrl("qrc:/res2/Catch_My_Breath-Kelly_Clarkson-14312722.mp3")));
    list->addMedia(QMediaContent(QUrl("qrc:/res2/暗号-周杰伦-235497.mp3")));
    list->addMedia(QMediaContent(QUrl("qrc:/res/华晨宇 - 好想爱这个世界啊.mp3")));
    list->addMedia(QMediaContent(QUrl("qrc:/res2/바빠-Sistar-19511203.mp3")));
    list->addMedia(QMediaContent(QUrl("qrc:/res2/Joysaaaa - 也许(1).mp3")));
    list->addMedia(QMediaContent(QUrl("qrc:/res/红色高跟鞋-《爱情左右》电影主题曲-蔡健雅-450444.mp3")));
    list->addMedia(QMediaContent(QUrl("qrc:/res/Try-Colbie_Caillat-5746692.mp3")));
    list->addMedia(QMediaContent(QUrl("qrc:/res2/Need_You_Now-Lady_Antebellum-40963108.mp3")));
    list->addMedia(QMediaContent(QUrl("qrc:/res/喜欢你-《澳门风云3》电影插曲_《摆渡人》电影插曲-Beyond-79090.mp3")));
    list->addMedia(QMediaContent(QUrl("qrc:/res2/开往早晨的午夜-张碧晨-15193825.mp3")));
    list->addMedia(QMediaContent(QUrl("qrc:/res/稻香-周杰伦-440613.mp3")));
    list->addMedia(QMediaContent(QUrl("qrc:/res/爱的飞行日记-周杰伦_杨瑞代-728668.mp3")));
    list->addMedia(QMediaContent(QUrl("qrc:/res2/指纹-杜宣达-197876799.mp3")));
    list->addMedia(QMediaContent(QUrl("qrc:/res/Maren Ord - Perfect.mp3")));
    list->addMedia(QMediaContent(QUrl("qrc:/res2/我们的明天-《重返20岁》电影主题曲-鹿晗-6215461.mp3")));
    list->addMedia(QMediaContent(QUrl("qrc:/res/敢爱敢做-《神奇两女侠》电影主题曲-林子祥-55216442.mp3")));
    list->addMedia(QMediaContent(QUrl("qrc:/res2/We_Can't_Stop-Miley_Cyrus-3386415.mp3")));
    list->addMedia(QMediaContent(QUrl("qrc:/res/一路生花-温奕心-162582615.mp3")));
    list->setPlaybackMode(QMediaPlaylist::Loop);

    player->setPlaylist(list);//选择播放列表
    player->setVolume(10);  //设置初始音量

    //播放 暂停 键功能的实现
    connect(ui->btn2,&QPushButton::clicked,[=](){
        switch (player->state())
        {
            //如果是播放状态 则暂停, 否则播放
            case QMediaPlayer::PlayingState:
                player->pause();
                break;
            default:
                player->play();
                break;
         }
    });

    //上一曲 按键功能的实现
    connect(ui->btn1,&QPushButton::clicked,list,[=](){
        int t=list->currentIndex();
        if(--t<0)   //t自减
                t=0;//如果已经是第一曲,则保持
        list->setCurrentIndex(t);//设置为当前指数
        player->play();//设置完成 开始播放
    });

    //下一曲 功能实现和上一曲类似
    connect(ui->btn3,&QPushButton::clicked,[=](){
        int t=list->currentIndex();
        if(++t==list->mediaCount())
            t=0;
        list->setCurrentIndex(t);
        player->play();
    });

    //音量调节
    connect(ui->yl,&QSlider::valueChanged,[=](){
        int vaule=ui->yl->value();//用QSlider滑动条 调节音量
        player->setVolume(vaule); //重新设置音量
    });


    QTimer *shijian = new QTimer(this);
    shijian->start(0);//使用定时器信号槽,尽快更新时间的显示

    connect(shijian,&QTimer::timeout,[=](){
        QDateTime time = QDateTime::currentDateTime();
        //显示时间,格式为:年-月-日 时:分:秒 周几
        QString StrCurrentTime = time.toString("yyyy/MM/dd | hh:mm:ss | ddd");
        //时间显示格式可自由设定,如hh:mm ddd 显示 时:分 周几
        ui->time->setText(StrCurrentTime);//调用ui文本框 用于放置当前时间
    });

    QTimer *shi = new QTimer(this);
    shi->start(8000);//8000ms切换一次悬浮着的优美文案
    Music::i=0;      //给Music类成员变量赋初值 用于控制stackedWidget的翻页
    connect(shi,&QTimer::timeout,[=](){
        ui->stackedWidget->setCurrentIndex(Music::i++);//stackedWidget实现翻页
        if(Music::i==20)
            Music::i=0;//循环使用文案句子,只有20页,可以依据自己的喜好增减
    });

}

Music::~Music()
{
    delete ui;
}

你可能感兴趣的:(Qt,qt,qt5,c++,开源,音视频)