#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QTimer>
#include <QTime>
#include <QTimerEvent>
#include <QDateTime>
#include <QtTextToSpeech/QTextToSpeech>
#include <QFont>
#include <QFontDialog>
#include <QMouseEvent>
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) override;
void mousePressEvent(QMouseEvent *event) override;//重写鼠标按压事件
void mouseMoveEvent(QMouseEvent *event) override;//重写鼠标移动事件
private slots://自定义槽函数
//void on_timeout();//超时
void on_startbtn_clicked();//启动建
void on_closebtn_clicked();//关闭键
private:
Ui::Widget *ui;
//定时器指针
QTimer *t;
//存储定时器的id
int t_id;
//定义一个播报员
QTextToSpeech *s;
//定义一个开始点
QPoint startp;
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//设置纯净窗口
setWindowFlag(Qt::FramelessWindowHint);
//实例化播报员
s = new QTextToSpeech(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::timerEvent(QTimerEvent *event)
{
if(event->timerId() == t_id)
{
//获取系统的日期
QDateTime sysdate = QDateTime::currentDateTime();
//将获取到的系统日期转换成字符串
QString date = sysdate.toString("yyyy-MM-dd hh:mm:ss");
//设置字体的大小
QFont f;
f.setPointSize(33);
ui->timelab->setText(date);//将获取到的系统日期显示到timelab
if(date == ui->timeline->text())
{
//到答预定时间,则播报
s->say(ui->timetext->toPlainText());
}
}
}
//对象版的启动按钮对应的槽函数
void Widget::on_startbtn_clicked()
{
if("启动" == ui->startbtn->text())
{
this->startTimer(1000);
ui->startbtn->setText("闹钟模式");
}
}
//对象版的关闭按钮对应的槽函数
void Widget::on_closebtn_clicked()
{
if("关闭" ==ui->closebtn->text())
{
this->close();
}
}
//鼠标按下时间处理函数
void Widget::mousePressEvent(QMouseEvent *event)
{
startp = event->globalPos() - this->frameGeometry().topLeft();
}
//鼠标移动时间处理函数
void Widget::mouseMoveEvent(QMouseEvent *event)
{
this->move(event->globalPos()-startp);
}