题目:闹钟制作
头文件:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QTime>
#include <QTimer>
#include <QTextToSpeech>
#include <QTimerEvent>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
//重写定时器事件函数
void timerEvent(QTimerEvent *e);
//分支线程函数
void* callBack(void* arg);
private slots:
void on_setButton_clicked();
void on_cancleButton_clicked();
private:
Ui::Widget *ui;
QTextToSpeech speecher;
int timerid;
bool ok = true;
int flag;
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
flag = 0;
ui->setupUi(this);
//调用定时器事件函数
this->startTimer(1000);
}
Widget::~Widget()
{
delete ui;
}
//定时器事件函数
void Widget::timerEvent(QTimerEvent *e)
{
QTime systime = QTime::currentTime();
QString ct = systime.toString("hh:mm");
//判断确认按钮是否按下,时间是否相同
if(1 == flag)
{
if(ct == ui->timeEdit->text())
{
if(speecher.state()==0)
{
speecher.say(ui->remindEdit->toPlainText());
}
}
}
if(ok==true)
{
ct[2]=':';
ok=false;
}
else
{
ct[2]=' ';
ok=true;
}
ui->lcdNumber->display(ct);
}
//确定按钮槽函数
void Widget::on_setButton_clicked()
{
//设置按钮状态为不可用
ui->setButton->setEnabled(false);
ui->timeEdit->setEnabled(false);
ui->remindEdit->setEnabled(false);
flag = 1;
}
//重置按钮槽函数
void Widget::on_cancleButton_clicked()
{
flag = 0;
ui->setButton->setEnabled(true);
ui->timeEdit->setEnabled(true);
ui->remindEdit->setEnabled(true);
ui->timeEdit->clear();
ui->remindEdit->clear();
}
现象: