当前位置:   article > 正文

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

qt 小项目

音乐盒

一,系统功能

(1)暂停、播放音乐

(2)上、下切换音乐

(3)滑动调节音量

(4)定时切换名人名言

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

注:效果图如下

4378faae1ea9473a90ceb778ef455416.png

二,项目涉及:

1,QPushButton

2,QMediaPlayer

3,QMediaPlaylist

4,QTimer,

5,QDateTime

6,Ui设计

三,UI部分

1,整体布局

f7a61b8bcc444cf1bd7998ef76dd45e8.png

2,布局嵌套

ecbd6802456340a988d81cc2f2c672fd.png

3,对象嵌套

7172cead7a2345ac920e675d102ded65.png

4,stackedWidget内部

1014465f75524d6ab7950efa95c65253.png

 

四,附源代码

1,获取源码:

https://pan.baidu.com/s/1SiUBDndmOCdH-SyF_6L0pA?pwd=l64l 
提取码:l64l

 2,关键代码(music.cpp)

  1. #include "music.h"
  2. #include "ui_music.h"//ui界面设计
  3. #include"QPushButton"//按钮头文件
  4. #include"QMediaPlayer"//音视频播放器头文件
  5. #include"QMediaPlaylist"//媒体文件头文件
  6. #include<QTimer>//计时器头文件
  7. #include<QDateTime>//时间的头文件
  8. Music::Music(QWidget *parent):
  9. QWidget(parent),
  10. ui(new Ui::Music)
  11. {
  12. ui->setupUi(this);
  13. //新建播放器
  14. QMediaPlayer *player = new QMediaPlayer;
  15. //新建音乐列表
  16. QMediaPlaylist *list = new QMediaPlaylist;
  17. //添加音乐列表,把喜欢的歌曲添加到此处,直接从资源文件里面复制地址
  18. list->addMedia(QMediaContent(QUrl("qrc:/res/Taylor Swift - Love Story.mp3")));
  19. list->addMedia(QMediaContent(QUrl("qrc:/res2/Catch_My_Breath-Kelly_Clarkson-14312722.mp3")));
  20. list->addMedia(QMediaContent(QUrl("qrc:/res2/暗号-周杰伦-235497.mp3")));
  21. list->addMedia(QMediaContent(QUrl("qrc:/res/华晨宇 - 好想爱这个世界啊.mp3")));
  22. list->addMedia(QMediaContent(QUrl("qrc:/res2/바빠-Sistar-19511203.mp3")));
  23. list->addMedia(QMediaContent(QUrl("qrc:/res2/Joysaaaa - 也许(1).mp3")));
  24. list->addMedia(QMediaContent(QUrl("qrc:/res/红色高跟鞋-《爱情左右》电影主题曲-蔡健雅-450444.mp3")));
  25. list->addMedia(QMediaContent(QUrl("qrc:/res/Try-Colbie_Caillat-5746692.mp3")));
  26. list->addMedia(QMediaContent(QUrl("qrc:/res2/Need_You_Now-Lady_Antebellum-40963108.mp3")));
  27. list->addMedia(QMediaContent(QUrl("qrc:/res/喜欢你-《澳门风云3》电影插曲_《摆渡人》电影插曲-Beyond-79090.mp3")));
  28. list->addMedia(QMediaContent(QUrl("qrc:/res2/开往早晨的午夜-张碧晨-15193825.mp3")));
  29. list->addMedia(QMediaContent(QUrl("qrc:/res/稻香-周杰伦-440613.mp3")));
  30. list->addMedia(QMediaContent(QUrl("qrc:/res/爱的飞行日记-周杰伦_杨瑞代-728668.mp3")));
  31. list->addMedia(QMediaContent(QUrl("qrc:/res2/指纹-杜宣达-197876799.mp3")));
  32. list->addMedia(QMediaContent(QUrl("qrc:/res/Maren Ord - Perfect.mp3")));
  33. list->addMedia(QMediaContent(QUrl("qrc:/res2/我们的明天-《重返20岁》电影主题曲-鹿晗-6215461.mp3")));
  34. list->addMedia(QMediaContent(QUrl("qrc:/res/敢爱敢做-《神奇两女侠》电影主题曲-林子祥-55216442.mp3")));
  35. list->addMedia(QMediaContent(QUrl("qrc:/res2/We_Can't_Stop-Miley_Cyrus-3386415.mp3")));
  36. list->addMedia(QMediaContent(QUrl("qrc:/res/一路生花-温奕心-162582615.mp3")));
  37. list->setPlaybackMode(QMediaPlaylist::Loop);
  38. player->setPlaylist(list);//选择播放列表
  39. player->setVolume(10); //设置初始音量
  40. //播放 暂停 键功能的实现
  41. connect(ui->btn2,&QPushButton::clicked,[=](){
  42. switch (player->state())
  43. {
  44. //如果是播放状态 则暂停, 否则播放
  45. case QMediaPlayer::PlayingState:
  46. player->pause();
  47. break;
  48. default:
  49. player->play();
  50. break;
  51. }
  52. });
  53. //上一曲 按键功能的实现
  54. connect(ui->btn1,&QPushButton::clicked,list,[=](){
  55. int t=list->currentIndex();
  56. if(--t<0) //t自减
  57. t=0;//如果已经是第一曲,则保持
  58. list->setCurrentIndex(t);//设置为当前指数
  59. player->play();//设置完成 开始播放
  60. });
  61. //下一曲 功能实现和上一曲类似
  62. connect(ui->btn3,&QPushButton::clicked,[=](){
  63. int t=list->currentIndex();
  64. if(++t==list->mediaCount())
  65. t=0;
  66. list->setCurrentIndex(t);
  67. player->play();
  68. });
  69. //音量调节
  70. connect(ui->yl,&QSlider::valueChanged,[=](){
  71. int vaule=ui->yl->value();//用QSlider滑动条 调节音量
  72. player->setVolume(vaule); //重新设置音量
  73. });
  74. QTimer *shijian = new QTimer(this);
  75. shijian->start(0);//使用定时器信号槽,尽快更新时间的显示
  76. connect(shijian,&QTimer::timeout,[=](){
  77. QDateTime time = QDateTime::currentDateTime();
  78. //显示时间,格式为:年-月-日 时:分:秒 周几
  79. QString StrCurrentTime = time.toString("yyyy/MM/dd | hh:mm:ss | ddd");
  80. //时间显示格式可自由设定,如hh:mm ddd 显示 时:分 周几
  81. ui->time->setText(StrCurrentTime);//调用ui文本框 用于放置当前时间
  82. });
  83. QTimer *shi = new QTimer(this);
  84. shi->start(8000);//8000ms切换一次悬浮着的优美文案
  85. Music::i=0; //给Music类成员变量赋初值 用于控制stackedWidget的翻页
  86. connect(shi,&QTimer::timeout,[=](){
  87. ui->stackedWidget->setCurrentIndex(Music::i++);//stackedWidget实现翻页
  88. if(Music::i==20)
  89. Music::i=0;//循环使用文案句子,只有20页,可以依据自己的喜好增减
  90. });
  91. }
  92. Music::~Music()
  93. {
  94. delete ui;
  95. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/615896
推荐阅读
相关标签
  

闽ICP备14008679号