Qt实现一个小闹钟

Qt实现一个小闹钟

1.需要在 .pro文件中添加: QT += multimedia ;如下图,添加之后记得保存一下

#QMediaPlayer 这个类用于播放mp3媒体文件。用之前得在 .pro文件中添加如下代码:
QT += multimedia

Qt实现一个小闹钟_第1张图片

2.界面设计

Qt实现一个小闹钟_第2张图片

mainwidget.cpp
#include "mainwidget.h"
#include "ui_mainwidget.h"

int tt = 0;
MainWidget::MainWidget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::MainWidget)
{
    ui->setupUi(this);

    connect(m_myTimer, SIGNAL(timeout()), this, SLOT(TimerResponse()));

    player->setVolume(50);//设置播放音量
}

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

void MainWidget::TimerResponse()
{
   if(m_Temp.hour() == QTime::currentTime().hour()&&
           m_Temp.minute() == QTime::currentTime().minute())
    {
       qDebug() << "响铃";
       player->play();  //播放音乐
       m_myTimer->stop();   //停止播放
   }
}

void MainWidget::on_pushButtonSet_clicked()
{
    m_Temp = ui->timeEdit->time();

    m_myTimer->start(500);//计时器开始计时,每隔0.5毫秒发出信号
    qDebug() << "计时开始!";
}

void MainWidget::on_pushButtonControl_clicked()
{
    tt++;
    if(tt == 10) tt = 0;
    else if(tt % 2 == 1)
        player->play();
    else
        player->stop();
}

void MainWidget::on_pushButtonReset_clicked()
{
    player->stop();
    m_myTimer->stop();//停止计时
}

void MainWidget::on_radioButtonMusicOne_clicked()
{
    player->setMedia(QUrl::fromLocalFile("E:/CloudMusic/Casper卡斯柏,华语群星,张韶涵网易云资讯台 - 夜空中最亮的星.mp3"));
}

void MainWidget::on_radioButtonMusicTwo_clicked()
{
    player->setMedia(QUrl::fromLocalFile("E:/CloudMusic/星野花梨 - 有何不可.mp3"));
}

void MainWidget::on_radioButtonMusicThree_clicked()
{
    player->setMedia(QUrl::fromLocalFile("E:/CloudMusic/Various Artists - 海绵宝宝主题曲(小黄人版).mp3"));
}


mainwidget.h
#ifndef MAINWIDGET_H
#define MAINWIDGET_H

#include 
#include 
#include 
#include 

QT_BEGIN_NAMESPACE
namespace Ui { class MainWidget; }
QT_END_NAMESPACE

class MainWidget : public QWidget
{
    Q_OBJECT

public:
    MainWidget(QWidget *parent = nullptr);
    ~MainWidget();

private slots:
    void TimerResponse();  //时间响应槽,不断检测:判断时间是否到响铃时间
    void on_pushButtonSet_clicked();
    void on_pushButtonControl_clicked();

    void on_pushButtonReset_clicked();

    void on_radioButtonMusicOne_clicked();

    void on_radioButtonMusicTwo_clicked();

    void on_radioButtonMusicThree_clicked();


private:
    QTimer *m_myTimer = new QTimer();
    QMediaPlayer *player = new QMediaPlayer;
    QTime m_Temp;


private:
    Ui::MainWidget *ui;
};
#endif // MAINWIDGET_H

main.cpp
#include "mainwidget.h"

#include 

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWidget w;
    w.show();
    return a.exec();
}

QTimer 类

QTimer类提供了重复的单次定时器。

QTimer类为计时器提供了高级编程接口。要使用它,创建一个QTimer,将其超时()信号连接到适当的插槽,并调用start()。从那时起,它将以固定的间隔发出timeout()信号。

注:简单来说可以理解为一个计时器!!

需要添加头文件:#include

模块添加(qmake): QT += core

继承: QObject

QTime类

QTime类提供时钟时间函数。

QTime对象包含一个时钟时间,它可以表示为自午夜以来的小时、分钟、秒和毫秒数。它可以从系统时钟中读取当前时间,并测量运行时间的范围。它提供了比较时间和通过添加若干毫秒来操作时间的函数。

QTime使用24小时时钟格式;它没有上午/下午的概念。与QDateTime不同,QTime对时区或夏令时(DST)一无所知。

创建QTime对象通常是显式地给出小时、分钟、秒和毫秒数,或者使用静态函数currentTime(),该函数创建一个表示系统本地时间的QTime对象。

QMediaPlayer类

QMediaPlayer类允许播放一个媒体资源。

QMediaPlayer类是一个高级媒体播放类。它可以用来播放歌曲、电影和网络广播等内容。要播放的内容被指定为QMediaContent对象,可以将其视为附加了附加信息的主要或规范URL。当提供QMediaContent时,可以开始播放。

Public Slots

1.play() //开始或恢复播放当前资源(媒体资源:音频 ||视频)。

2.stop() //停止播放,并将播放位置重置为开始位置。

3.setVolume() //设置播放音量,int : 0 ~ 100;默认值是100。

4.setMedia() //设置媒体资源

​ 例如: player->setMedia(QUrl::fromLocalFile(“C:/Users/Zhangkai/Desktop/Qt_Example/demo7/邱永传 - 十二年.mp3”));

QMediaContent类

QMediaContent类提供对与媒体内容相关的资源的访问。

你可能感兴趣的:(Qt学习,qt)