起床闹钟
头文件
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QTimer> //定时类头文件
#include <QTime> //时间类头文件
#include <QTimerEvent> //定时器类事件头文件
#include <QDateTime> //日期时间类头文件
#include<QTextToSpeech> //语言转文本头文件
#include <QMessageBox> //容器头文件
#include <QString>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = nullptr);
~Widget();
private slots:
void on_startbtn_clicked();
void on_stopbtn_clicked();
void timeout_slot();
private:
Ui::Widget *ui;
//定义一个定时器指针
QTimer *t1;
//定义语音转文字指针
QTextToSpeech *speech;
//判断闹钟是否启动
bool flag=0;
};
#endif // WIDGET_H
功能函数
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
//设置界面大小
this->setFixedSize(680,600);
//设置窗口名
this->setWindowTitle("颜小小的闹钟");
//设置窗口图标
this->setWindowIcon(QIcon("E:\\hqyj\\qt\\c++\\QQ\\icon\\QQ20230613212208.jpg"));
//设置定时器
t1=new QTimer(this);
//实例化语言转文字对象
speech =new QTextToSpeech(this);
//将timeout讯号与对应槽函数连接
connect(t1, &QTimer::timeout, this, &Widget::timeout_slot);
//启动定时器
t1->start(50);
//设置timelabel显示格式
ui->timelabel->setAlignment(Qt::AlignHCenter);
//设置关闭按钮不可用
ui->stopbtn->setEnabled(false);
}
Widget::~Widget()
{
delete ui;
}
//启动按钮槽函数
void Widget::on_startbtn_clicked()
{
//设置按钮和文本是否可用
ui->stopbtn->setEnabled(true); //停止按钮可用
ui->startbtn->setEnabled(false);
ui->textEdit->setEnabled(false);
ui->timeEdit->setEnabled(false);
flag=1;
}
//关闭按钮槽函数
void Widget::on_stopbtn_clicked()
{
ui->startbtn->setEnabled(true); //启动按钮可用
ui->stopbtn->setEnabled(false);
ui->textEdit->setEnabled(true);
ui->timeEdit->setEnabled(true);
flag=0;
}
//定时器事件结束的槽函数
void Widget::timeout_slot()
{
//获取系统时间
QTime sys_time=QTime::currentTime();
//将时间转换成字符串
QString time=sys_time.toString("hh:mm:ss");
QString time1=ui->timeEdit->time().toString("hh:mm:ss");
//将时间展示在ui界面上
ui->timelabel->setText(time);
//闹钟启动
if(flag==1&&time==time1)
{
speech->say(ui->textEdit->toPlainText());
QMessageBox::information(this,"闹钟",ui->textEdit->toPlainText());
ui->stopbtn->setEnabled(false);
ui->startbtn->setEnabled(true);
ui->textEdit->setEnabled(true);
ui->timelabel->setEnabled(true);
flag=0;
}
}