闹钟头文件
#ifndef MYWIDGET_H
#define MYWIDGET_H
#include <QWidget>
#include <QPushButton>
#include <QLabel>
#include <QLineEdit>
#include <QTextEdit>
#include <QTimer>
#include <QTime>
#include <QDateTime>
#include <QPoint>
#include <QtTextToSpeech/QTextToSpeech>
#include <QIcon>
#include <QFont>
#include <QMessageBox>
#include <QTextOption>
#include <chrono>
#include <thread>
QT_BEGIN_NAMESPACE
namespace Ui { class MyWidget; }
QT_END_NAMESPACE
class MyWidget : public QWidget
{
Q_OBJECT
public slots:
void btn1_slot(void);
void btn2_slot(void);
void btn2_falg_slot(void);
void btn3_slot(void);
void btn3_flag_slot(void);
void timeout_slot(void);
void voice_broadcast(void);
public:
MyWidget(QWidget *parent = nullptr);
~MyWidget();
void timerEvent(QTimerEvent* event)override;
// void mousePressEvent(QMouseEvent *event) override;
// void mouseMoveEvent(QMouseEvent *event) override;
private:
Ui::MyWidget *ui;
QPushButton* btn1;
QPushButton* btn2;
QPushButton* btn3;
QLabel* lab;
QLineEdit* le;
QTextEdit* te;
QTextToSpeech* speaker;
int tid=0;
QTimer timer;
};
#endif // MYWIDGET_H#ifndef MYWIDGET_H
#define MYWIDGET_H
#include <QWidget>
#include <QPushButton>
#include <QLabel>
#include <QLineEdit>
#include <QTextEdit>
#include <QTimer>
#include <QTime>
#include <QDateTime>
#include <QPoint>
#include <QtTextToSpeech/QTextToSpeech>
#include <QIcon>
#include <QFont>
#include <QMessageBox>
#include <QTextOption>
#include <chrono>
#include <thread>
QT_BEGIN_NAMESPACE
namespace Ui { class MyWidget; }
QT_END_NAMESPACE
class MyWidget : public QWidget
{
Q_OBJECT
public slots:
void btn1_slot(void);
void btn2_slot(void);
void btn2_falg_slot(void);
void btn3_slot(void);
void btn3_flag_slot(void);
void timeout_slot(void);
void voice_broadcast(void);
public:
MyWidget(QWidget *parent = nullptr);
~MyWidget();
void timerEvent(QTimerEvent* event)override;
// void mousePressEvent(QMouseEvent *event) override;
// void mouseMoveEvent(QMouseEvent *event) override;
private:
Ui::MyWidget *ui;
QPushButton* btn1;
QPushButton* btn2;
QPushButton* btn3;
QLabel* lab;
QLineEdit* le;
QTextEdit* te;
QTextToSpeech* speaker;
int tid=0;
QTimer timer;
};
#endif // MYWIDGET_H
源文件
#include "mywidget.h"
#include "ui_mywidget.h"
MyWidget::MyWidget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::MyWidget)
{
ui->setupUi(this);
/*-----------窗口类的相关设置------------*/
this->resize(640,480);
this->setFixedSize(640,480);
this->setWindowTitle("闹钟");
this->setWindowIcon(QIcon(":/picture/alarm.png"));
// this->setWindowFlag(Qt::FramelessWindowHint);
this->setStyleSheet("background-color:pink");
/*-----------按钮类的相关设置------------*/
this->btn1=new QPushButton("×",this);
this->btn2=new QPushButton("启动",this);
this->btn3=new QPushButton("停止",this);
btn1->resize(30,30);
btn2->resize(80,60);
btn3->resize(80,60);
btn1->move(610,0);
btn2->move(365,140);
btn3->move(475,140);
btn1->setStyleSheet("background-color:rgb(0,0,0,0);color:rgb(255,255,255)");
btn2->setStyleSheet("background-color:red;color:rgb(0,0,0);border-radius:10px");
btn3->setStyleSheet("background-color:red;color:rgb(0,0,0);border-radius:10px");
btn2->setEnabled(false);
btn3->setEnabled(false);
QFont font1,font2,font3;
font1.setFamily("仿宋");
font1.setPointSize(14);
font1.setBold(true);
btn1->setFont(font1);
font2.setFamily("仿宋");
font2.setPointSize(15);
font2.setBold(true);
btn2->setFont(font1);
font3.setFamily("仿宋");
font3.setPointSize(15);
font3.setBold(true);
btn3->setFont(font1);
/*-----------行编辑器类的相关设置------------*/
this->le=new QLineEdit(this);
le->resize(190,60);
le->move(365,40);
le->setStyleSheet("background-color:rgb(255,255,255);color:rgb(0,0,0);border-radius:10px");
QFont font4;
font4.setFamily("楷体");
font4.setPointSize(15);
font4.setBold(true);
le->setFont(font4);
le->setAlignment(Qt::AlignCenter);//设置行编辑器的对齐方式
le->setPlaceholderText("请输入预定时间");
/*-----------标签类的相关设置------------*/
this->lab=new QLabel(this);
lab->resize(240,160);
lab->move(85,40);
lab->setStyleSheet("background-color:rgb(255,255,255);color:rgb(0,0,0);border-radius:10px");
QFont font5;
font5.setFamily("楷体");
font5.setPointSize(15);
font5.setBold(true);
lab->setFont(font5);
lab->setAlignment(Qt::AlignCenter);//设置标签居中显示
/*-----------文本编辑器的相关设置------------*/
this->te=new QTextEdit(this);
te->resize(470,200);
te->move(85,240);
te->setStyleSheet("background-color:rgb(255,255,255);color:rgb(0,0,0);border-radius:10px");
QFont font6;
font6.setFamily("仿宋");
font6.setPointSize(15);
font6.setBold(true);
te->setFont(font6);
te->setAlignment(Qt::AlignCenter);//设置文本编辑器居中显示
this->speaker=new QTextToSpeech;
tid=this->startTimer(0);//启动定时器
connect(le,&QLineEdit::textChanged,this,&MyWidget::btn2_falg_slot);
connect(le,&QLineEdit::textChanged,this,&MyWidget::btn3_flag_slot);
connect(btn1,&QPushButton::clicked,this,&MyWidget::btn1_slot);
connect(btn2,&QPushButton::clicked,this,&MyWidget::btn2_slot);
connect(btn3,&QPushButton::clicked,this,&MyWidget::btn3_slot);
connect(&timer,&QTimer::timeout,this,&MyWidget::timeout_slot);
connect(te,&QTextEdit::textChanged,this,&MyWidget::voice_broadcast);
}
MyWidget::~MyWidget()
{
delete ui;
this->killTimer(tid);
}
void MyWidget::timerEvent(QTimerEvent *event)
{
if(event->timerId()==tid)
{
QDateTime systemtime=QDateTime::currentDateTime();
QString datetime=systemtime.toString("yyyy-MM-dd hh:mm:ss");
lab->setText(datetime);
}
}
void MyWidget::btn1_slot(void)
{
QMessageBox box(QMessageBox::Warning,"退出警告框","DO you really want to quit?",QMessageBox::Yes|QMessageBox::No,nullptr);
box.setDefaultButton(QMessageBox::Yes);
int res=box.exec();
if(res==QMessageBox::Yes)
{
QWidget::close();
}
else if(res==QMessageBox::No)
{
QWidget::show();
}
}
void MyWidget::btn2_slot(void)
{
btn3->setEnabled(true);
btn3->setStyleSheet("background-color:rgb(255,255,255);color:rgb(0,0,0);border-radius:10px");
btn2->setStyleSheet("background-color:skyblue;color:rgb(0,0,0);border-radius:10px");
timer.start(0);
}
void MyWidget::btn2_falg_slot(void)
{
if(le->text().length()==8&&le->text()!="00:00:00")
{
btn2->setEnabled(true);
btn2->setStyleSheet("background-color:rgb(255,255,255);color:rgb(0,0,0);border-radius:10px");
}
else
{
btn2->setEnabled(false);
btn2->setStyleSheet("background-color:red;color:rgb(0,0,0);border-radius:10px");
}
}
void MyWidget::btn3_slot(void)
{
QMessageBox box(QMessageBox::Warning,"退出警告框","DO you really want to stop?",QMessageBox::Yes|QMessageBox::No,nullptr);
box.setDefaultButton(QMessageBox::Yes);
int res=box.exec();
if(res==QMessageBox::Yes)
{
btn3->setEnabled(false);
btn2->setStyleSheet("background-color:rgb(255,255,255);color:rgb(0,0,0);border-radius:10px");
btn3->setStyleSheet("background-color:skyblue;color:rgb(0,0,0);border-radius:10px");
timer.stop();
}
}
void MyWidget::btn3_flag_slot(void)
{
if(le->text().length()==8&&le->text()!="00:00:00")
{
btn3->setStyleSheet("background-color:rgb(255,255,255);color:rgb(0,0,0);border-radius:10px");
}
else
{
btn3->setEnabled(false);
btn3->setStyleSheet("background-color:red;color:rgb(0,0,0);border-radius:10px");
}
}
void MyWidget::timeout_slot(void)
{
QTime systime=QTime::currentTime();
QString time=systime.toString("hh:mm:ss");
if(le->text()==time)
{
timer.stop();
speaker->say(te->toPlainText());//获得文本编辑器的内容
le->clear();
std::this_thread::sleep_for(std::chrono::seconds(5));//睡眠操作
te->clear();
}
}
void MyWidget::voice_broadcast(void)
{
if(te->toPlainText()=="0")
{
te->setText("三更灯火五更鸡,\n正是男儿读书时。\n黑发不知勤学早,\n白首方悔读书迟。");
QTextOption textoption; /*---设置文本编辑器内容时有换行的居中显示*/
textoption.setAlignment(Qt::AlignCenter);
te->document()->setDefaultTextOption(textoption);
}
else if(te->toPlainText()=="1")
{
te->setText("狗贼\n还不起床\n讨打");
QTextOption textoption; /*---设置文本编辑器内容时有换行的居中显示*/
textoption.setAlignment(Qt::AlignCenter);
te->document()->setDefaultTextOption(textoption);
}
else if(te->toPlainText()=="2")
{
te->setText("狗贼\n再不起床\n女神就跟别人跑了");
QTextOption textoption; /*---设置文本编辑器内容时有换行的居中显示*/
textoption.setAlignment(Qt::AlignCenter);
te->document()->setDefaultTextOption(textoption);
}
}