电子闹钟
显示当前系统时间,设置定时闹钟,闹钟响进行语音播报自定义信息
代码示例
头文件
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<QLCDNumber>
#include<QTimerEvent>
#include<QTime>
#include<QDebug>
#include <QTextToSpeech>
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_StartBtn_clicked();
void on_StopBtn_clicked();
private:
Ui::Widget *ui;
QLCDNumber *lcd;
int clickedflag = 0;
int showflag = 1;
QString systimetext;
//定义一个播报着
QTextToSpeech speech;
QTextToSpeech::State state;
};
#endif // WIDGET_H
源文件
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
this->setFixedSize(570,300);
this->setWindowTitle("电子闹钟");
ui->TimeEdit->setStyleSheet("border: 1px solid whitle;");
ui->TimeEdit->resize(250,75);
ui->TimeEdit->move(300,20);
ui->StartBtn->move(300,115);
ui->StopBtn->move(300+ui->StartBtn->width()+20,115);
ui->StopBtn->setEnabled(false);
ui->MsgEdit->resize(this->width()-40,90);
ui->MsgEdit->move(20,this->height()-20-90);
ui->MsgEdit->setPlaceholderText("请在这里输入提醒消息");
ui->TimeEdit->setDisplayFormat("HH:mm");
lcd = new QLCDNumber(this);
lcd->resize(250,75);
lcd->move(20,20);
lcd->setSegmentStyle(QLCDNumber::Flat);
// // 设置能显示的位数
// lcd->setDigitCount(20);
lcd->setStyleSheet("border: 1px solid whitle; color: red; background: black;");
//启动定时器
startTimer(1000);
}
Widget::~Widget()
{
delete ui;
}
//重写定时器事件
void Widget::timerEvent(QTimerEvent *)
{
//1.获取系统时间
QTime systime = QTime::currentTime();
//2.将系统时间转换为字符串
systimetext = systime.toString("HH:mm");
if(clickedflag == 1 )
{
if(speech.state()!=1)
{
if(ui->TimeEdit->text()==systimetext)
{
speech.say(ui->MsgEdit->text());
}
}
}
if(showflag)
{
systimetext[2] = ':';
showflag = false;
}else{
systimetext[2] = ' ';
showflag = true;
}
//将时间字符串展示到LCD中
lcd->display(systimetext);
}
void Widget::on_StartBtn_clicked()
{
clickedflag = 1;
//开始后禁用输入时间
ui->TimeEdit->setEnabled(false);
ui->MsgEdit->setEnabled(false);
ui->StartBtn->setEnabled(false);
ui->StopBtn->setEnabled(true);
}
void Widget::on_StopBtn_clicked()
{
clickedflag = 0;
ui->TimeEdit->setEnabled(true);
ui->MsgEdit->setEnabled(true);
ui->StartBtn->setEnabled(true);
ui->StopBtn->setEnabled(false);
}