音乐盒
一,系统功能
(1)暂停、播放音乐
(2)上、下切换音乐
(3)滑动调节音量
(4)定时切换名人名言
(5)显示时间(年月日,时分秒,周几)
注:效果图如下
二,项目涉及:
1,QPushButton
2,QMediaPlayer
3,QMediaPlaylist
4,QTimer,
5,QDateTime
6,Ui设计
三,UI部分
1,整体布局
2,布局嵌套
3,对象嵌套
4,stackedWidget内部
四,附源代码
1,获取源码:
https://pan.baidu.com/s/1SiUBDndmOCdH-SyF_6L0pA?pwd=l64l
提取码:l64l2,关键代码(music.cpp)
#include "music.h" #include "ui_music.h"//ui界面设计 #include"QPushButton"//按钮头文件 #include"QMediaPlayer"//音视频播放器头文件 #include"QMediaPlaylist"//媒体文件头文件 #include<QTimer>//计时器头文件 #include<QDateTime>//时间的头文件 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; }