Qt实现一个小闹钟
1.需要在 .pro文件中添加: QT += multimedia ;如下图,添加之后记得保存一下
#QMediaPlayer 这个类用于播放mp3媒体文件。用之前得在 .pro文件中添加如下代码:
QT += multimedia
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 <QWidget>
#include <QMediaPlayer>
#include <QTimeEdit>
#include <QTimer>
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 <QApplication>
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类提供对与媒体内容相关的资源的访问。