闹钟的实现
widget.文件
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QMessageBox>
#include <QTime>
#include <QTimerEvent>
#include <QtTextToSpeech>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{
Q_OBJECTpublic:
Widget(QWidget *parent = nullptr);
~Widget();
void timerEvent(QTimerEvent *s);private slots:
//关闭按钮
void on_pushButton_2_clicked();
//启动
void on_pushButton_clicked();private:
Ui::Widget *ui;
//定义定时器id
int id;
int id2;
QTextToSpeech *specheer;
};
#endif // WIDGET_H
widget.cpp文件
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
,specheer(new QTextToSpeech(this))
{
ui->setupUi(this);
this->setWindowFlag(Qt::FramelessWindowHint);
this->setAttribute(Qt::WA_TranslucentBackground);
ui->label_3->setWordWrap(true);
//启动一个定时器
id = startTimer(1000);//每隔1秒自动执行 timtEvent()}
Widget::~Widget()
{
delete ui;
}
//关闭按钮的槽函数
void Widget::on_pushButton_2_clicked()
{
close();
}
//定时器超时,自动执行代码功能
void Widget::timerEvent(QTimerEvent *s){
//判断id是否超时
if(s->timerId() == id){
//获取系统时间
QTime sys_time = QTime::currentTime();
QString t = sys_time.toString(("hh:mm:ss"));
ui->label->setText(t);
ui->label->setAlignment(Qt::AlignCenter);
}
//判断id2是否超时
if(s->timerId() == id2){
if(ui->lineEdit->text() == ui->label->text()){
for(int i=0;i<10;i++){
specheer->setLocale(QLocale::Japanese);
specheer->say(ui->label_3->text());
specheer->setRate(0.1);}
}
}
}
//启动函数的槽函数
void Widget::on_pushButton_clicked()
{
QMessageBox::information(this,"成功","闹钟设置完成");
id2 = startTimer(1000);
}