基于QT Creator实现的闹钟小程序
这是我第一次写博客,写的不好见谅,将我的作品写成博客作为一个纪录和给QT的初学者和学生一个参考。首先在工程文件中添加qt+= multimedia语句,否则无法使用声音功能。
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
#include
#include
#include
#include
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
void getTime();//获取当前时间的函数
void setMedia1();//设置播放第一首音乐
void setMedia2();//第二首
void setMedia3();//第三首
private slots:
void on_pushButton_clicked();
void on_timeEdit_editingFinished();
void on_pushButton_2_clicked();
void on_pushButton_3_clicked();
void on_radioButton_clicked();
void on_radioButton_2_clicked();
void on_radioButton_3_clicked();
void on_pushButton_4_clicked();
void checkFun();//检查当前时间是否到达设置的时间,此函数必须放在private slots中
private:
Ui::MainWindow *ui;
QTime tempTime;//临时时间,用于存放设置好的时间
QMediaPlayer player;//设置播放器
int checkNum;//设置播放第几首音乐的变量
QTimer *timer1=new QTimer(this);//设置定时器
};
#endif // MAINWINDOW_H
#include “mainwindow.h”
#include “ui_mainwindow.h”
#include
#include
#include
#include
#include
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->ui->lineEdit->setText("");//将消息框设置空
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::getTime()//获取当前时间函数
{
QTime t;
int h=t.currentTime().hour();
int min=t.currentTime().minute();
int sec=t.currentTime().second();
qDebug()<<“当前时间为:”<
}
void MainWindow::setMedia1()//设置播放器播放的路径为第一首
{
player.setVolume(30);
player.setMedia(QUrl::fromLocalFile(“D:/KuGou/Beyoncé - Halo.mp3”));//后面是播放音乐的文件路径
}
void MainWindow::setMedia2()//设置播放器播放的路径为第二首
{
player.setVolume(30);
player.setMedia(QUrl::fromLocalFile(“D:/KuGou/Adele - Set Fire to the Rain.mp3”));
}
void MainWindow::setMedia3()//设置播放器播放的路径为第三首
{
player.setVolume(30);
player.setMedia(QUrl::fromLocalFile(“D:/KuGou/Erika Selin - Break Me Up.mp3”));
}
void MainWindow::on_pushButton_clicked()//获取当前时间按钮槽函数
{
MainWindow::getTime();//一旦按下当前时间按钮则调用获取当前时间函数
}
void MainWindow::on_timeEdit_editingFinished()//时间设置框函数
{
tempTime=this->ui->timeEdit->time();//将时间设置框的时间赋值给tempTime
qDebug()<
this->ui->lineEdit->setText(“设置闹钟时间为:”+tempTime.toString());//消息框显示设置时间
}
void MainWindow::on_pushButton_2_clicked()//播放按钮函数
{
if(checkNum1)//如果是选择的音乐1,则将播放器的地址选择为第一曲
MainWindow::setMedia1();
else if(checkNum2)
MainWindow::setMedia2();//如果是选择的音乐2,则将播放器的地址选择为第二曲
else if(checkNum==3)
MainWindow::setMedia3();//如果是选择的音乐3,则将播放器的地址选择为第三曲
player.play();//播放器开始播放音乐
qDebug()<<“开始播放”;
this->ui->lineEdit->setText(“播放”);//消息框显示播放
}
void MainWindow::on_pushButton_3_clicked()//暂停按钮槽函数
{
player.stop();
qDebug()<<“暂停”;
this->ui->lineEdit->setText(“暂停”);
}
void MainWindow::on_radioButton_clicked()//音乐1选择按钮函数
{
checkNum=1;//将选择播放哪首音乐的变量赋值为1
}
void MainWindow::on_radioButton_2_clicked()//音乐2选择按钮函数
{
checkNum=2;//将选择播放哪首音乐的变量赋值为2
}
void MainWindow::on_radioButton_3_clicked()//音乐3选择按钮函数
{
checkNum=3;//将选择播放哪首音乐的变量赋值为3
}
void MainWindow::on_pushButton_4_clicked()//设置完成按钮函数 } 不做任何改动
{
connect(timer1,SIGNAL(timeout()),this,SLOT(checkFun()));//定时器timer每隔一段时间执行checkFun函数
timer1->start(1000);//设置间隔时间为一秒
qDebug()
void MainWindow::checkFun()//检查当前时间是否和设置的时间相同
{
qDebug()<<“更新”;
QTime t;
if(tempTime.hour()==t.currentTime().hour()&&tempTime.minute()==t.currentTime().minute())
{
MainWindow::on_pushButton_2_clicked();//当时间相同时,开始执行播放函数,播放选择好的音乐
timer1->stop();//让定时器停止工作,因为只让闹钟执行一次
}
}main.cpp
运行截图