头文件
//.h头文件
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QTimerEvent>
#include <QDateTime>
#include <QTextToSpeech>
#include <QMessageBox>
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 *event);
private slots:
void on_pushButton_clicked();
void on_pushButton_2_clicked();
private:
Ui::Widget *ui;
//实例化定时器
QDateTime t;
int timerid;
//实例化播报者
QTextToSpeech reader;
};
#endif // WIDGET_H
功能文件
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//窗口弹出即启动日历表
timerid = startTimer(1000);
}
Widget::~Widget()
{
delete ui;
}
//当前的时间
void Widget::timerEvent(QTimerEvent *event)
{
t = QDateTime::currentDateTime();
ui->label->setText(t.toString("yyyy年MM月dd日 hh:mm"));
}
//启动按钮的槽函数
void Widget::on_pushButton_clicked()
{
//禁用两个可输入文本框
ui->lineEdit->setEnabled(false);
ui->textEdit->setEnabled(false);
//判断时间是否相等
if(ui->lineEdit->text() == t.toString("yyyy年MM月dd日 hh:mm"))
{
//如果时间相等,播放textedit的内容
reader.say(ui->textEdit->toPlainText());
}
}
//取消按钮的槽函数
void Widget::on_pushButton_2_clicked()
{
int res = QMessageBox::question(this, "提示...", "是否取消锁定");
if(res == QMessageBox::Yes)
{
//启用两个可输入文本框
ui->lineEdit->setEnabled(true);
ui->textEdit->setEnabled(true);
}
}
功能实现:
1.日历与系统一直,并持续运行
2.当输入好闹钟时间以及提示信息的文本后,点击启动按钮,锁定这两个文本,且日历时间和闹钟时间相等时,播报提示信息
3.点击取消按钮,提示对话框,yes则结束那两个文本的锁定。