效果展示:
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//调用定时器启动函数
this->startTimer(1000);
//获取日期
QDateTime currentTime = QDateTime::currentDateTime();
QString timeText = currentTime.toString("yyyy年MM月dd日 dddd");
//把时间放入文本框
ui->dateEdit->setText(timeText);
//设置背景
setAutoFillBackground(true); //允许设置
QPixmap pixmap = QPixmap(":/icon/4.jpg").scaled(this->size());
QPalette palette(this->palette());
palette.setBrush(QPalette::Background, QBrush(pixmap));
this->setPalette(palette);
//设置标题
this->setWindowTitle("小小闹钟");
}
void Widget::timerEvent(QTimerEvent *)
{
//1、获取系统时间
sysTime = QTime::currentTime();
//2、将时间类对象转换为字符串
t = sysTime.toString("hh:mm:ss");
QString tTemp=sysTime.toString("hh:mm");
//此处用了中文版:输入闹钟时间无需切换英文输入法
ui->lcdNumber->setDigitCount(8);//设置为显示8位
//设置时钟的闪烁切换,每秒都在执行
if(ok==true)
{
t[2]=':';
t[5]=' ';
ok=false;
}else
{
t[2]=' ';
t[5]=':';
ok=true;
}
//lcd钟表显示时分秒
ui->lcdNumber->display(t);
alarm = ui->lineEdit->text();
//判断闹钟时间到,开始播报计划事件
if(alarm==tTemp)
{
speecher.say(ui->textEdit->toPlainText());
//调用阅读者的读函数,将内容播报出去
}
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_setbtn_clicked()
{
//ui->lineEdit->clear();
ui->setbtn->setEnabled(false);
ui->lineEdit->setEnabled(false);
ui->textEdit->setEnabled(false);
}
void Widget::on_cancelbtn_clicked()
{
ui->setbtn->setEnabled(true);
ui->lineEdit->setEnabled(true);
ui->textEdit->setEnabled(true);
ui->lineEdit->clear();
ui->textEdit->clear();
}
头文件:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QTimerEvent>
#include <QTime>
#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();
//声明要重写的定时器事件
void timerEvent(QTimerEvent *);
private slots:
void on_setbtn_clicked();
void on_cancelbtn_clicked();
private:
Ui::Widget *ui;
QTime sysTime;
QString t;
bool ok=true; //声明变量ok,用于判断闪烁
QString alarm;
QTextToSpeech speecher; //定义一个播报者
};
#endif // WIDGET_H