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)

#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;
}

  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
基于Qt开发的项目管理系统是一个功能完善、界面友好的工具,旨在帮助用户有效地管理和追踪他们的项目。该系统具有以下几个重要特点和优势: 1. 可视化界面:该系统的用户界面采用了Qt的设计风格,美观且易于使用。用户可以方便地通过鼠标点击和拖拽等操作完成各种功能,如创建项目、添加任务、分配资源等。 2. 项目管理:用户可以在系统中创建和管理多个项目。每个项目都有自己的名称、描述和重要日期等信息。用户可以随时查看每个项目的进度、完成情况和各个任务的负责人等信息。 3. 任务分配:系统支持用户为每个项目创建任务,并可指定负责人和任务截止日期。用户可以随时获取任务状态、负责人和进度等信息。同时,系统还提供了任务优先级、标签和注释等功能,帮助用户更好地管理任务。 4. 资源管理:在项目管理系统中,用户可以为每个项目分配资源。资源可以是人力、物料或设备等,用户可以对资源进行分配、调整和管理。系统还提供了资源使用情况的统计和报表,帮助用户更好地利用资源。 5. 数据统计与报表:该系统会记录项目的各种数据,如任务完成时间、资源使用情况等,并提供统计和报表功能。用户可以通过图表和表格等形式,直观地了解和分析项目的进展和效果。 综上所述,基于Qt开发的项目管理系统是一款强大且实用的工具,能够帮助用户高效地组织和管理项目。通过其可视化界面、任务分配、资源管理和数据统计等功能,用户可以更好地掌控项目的进程,并取得更好的项目管理效果。如果您有兴趣,可以联系我们获取源码并尝试体验这个系统。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值