设计一个闹钟,界面如下
//功能函数
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
this->setWindowTitle("Alarm");
this->setWindowIcon(QIcon("D:/Qt/day3/pic/pic.png"));
tid=this->startTimer(1000);
speecher = new QTextToSpeech(this);
}
Widget::~Widget()
{
delete ui;
}
//事件处理 启动的槽函数
void Widget::on_startBtn_clicked()
{
if(ui->startBtn->text()=="启动")
{
//获取写入的时间
QString msg=ui->alarmEdit->text();
//启动一个定时器
tid2=this->startTimer(1000); //参数是定时器的间隔事件;返回值是定时器的唯一标识
//修改按钮上文字
ui->startBtn->setText("已启动");
ui->closeBtn->setText("关闭");
}
}
void Widget::on_closeBtn_clicked()
{
if(ui->closeBtn->text()=="关闭")
{
//将按钮上文字改成关闭
ui->closeBtn->setText("已关闭");
//关闭一个定时器
this->killTimer(tid2);
//将按钮上的文本改成启动
ui->startBtn->setText("启动");
ui->alarmEdit->clear();
ui->txtEdit->clear();
}
}
//定时器事件处理函数
void Widget::timerEvent(QTimerEvent *e)
{
//获取系统当前的日期时间
QDateTime sys_time =QDateTime::currentDateTime();
if(e->timerId()==tid)
{
//将时间展示到ui界面
//lable居中显示
ui->currentlab->setAlignment(Qt::AlignCenter);
ui->currentlab->setText("<html>北京时间<br>" + sys_time.toString("yyyy-MM-dd<br>hh:mm:ss") + "</html>");
//ui->currentlab->setText(sys_time.toString("yyyy-MM-dd hh:mm:ss"));
ui->currentlab->setFont(QFont("黑体",11,5));
}
if (e->timerId()==tid2)
{
if(sys_time.toString("yyyy-MM-dd hh:mm:ss")==ui->alarmEdit->text())
{
speecher->say(ui->txtEdit->text());
ui->txtEdit->setText("时间到!!");
ui->txtEdit->setFont(QFont("黑体",12,5));
}
}
}
结果: