实现一个label显示系统时间,另一个行编辑器输入时间并设定。到定时时间后语音播报文本编辑器中内容。设定后设定按钮禁用,取消后可再次设定
.h文件
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QPushButton>
#include <QTimer>
#include <QTime>
#include <QLabel>
#include <QLineEdit>
#include <QTextToSpeech>
#include <QDebug>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
signals:
void send_speech();
public slots:
void show_time();
void time_out();
private slots:
void on_set_btn_clicked();
void on_cancel_btn_clicked();
private:
Ui::Widget *ui;
QTimer *systimer;
QTimer *deftimer;
};
#endif // WIDGET_H
.cpp文件
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
, systimer(new QTimer(this))
, deftimer(new QTimer(this))
{
ui->setupUi(this);
systimer->start(1000);
connect(systimer,&QTimer::timeout,this,&Widget::show_time);
connect(deftimer,&QTimer::timeout,this,&Widget::time_out);
qDebug()<<ui->time_lineedit->text();
qDebug()<<(QTime::currentTime()).toString("hh:mm:ss");
}
void Widget::show_time(){
QDateTime ctime=QDateTime::currentDateTime();
QString s=ctime.toString("yyyy MM dd hh:mm:ss");
ui->systime_lab->setText(s);
}
void Widget::on_set_btn_clicked()
{
deftimer->start(1000);
ui->set_btn->setEnabled(false);
}
void Widget::time_out(){
qDebug()<<"设定时间"<<ui->time_lineedit->text();
qDebug()<<"当前时间"<<(QTime::currentTime()).toString("yyyy MM dd hh:mm:ss");
if(ui->time_lineedit->text()==(QDateTime::currentDateTime()).toString("yyyy MM dd hh:mm:ss")){
QTextToSpeech *speak=new QTextToSpeech(this);
QString s=ui->textEdit->toPlainText();
speak->say(s);
ui->set_btn->setEnabled(true);
}
}
void Widget::on_cancel_btn_clicked()
{
deftimer->stop();
ui->set_btn->setEnabled(true);
ui->time_lineedit->clear();
}
Widget::~Widget()
{
delete ui;
}