作业:
widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QDebug>
#include<QLabel>//标签类
#include<QTime>//时间类
#include<QDateTime>
#include<QTimer>//定时器类
#include<QTimerEvent>
#include<QLineEdit>//行编辑器类
#include<QPushButton>//按钮类
#include<QTextToSpeech>//语言播报类
#include<QMessageBox>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();
public slots:void timeout_slot();void clicked_slot();void timeout_slot1();void clicked_slot2();private:Ui::Widget *ui;QLabel *lab1;QLabel *lab2;QTimer *objTimer;QTimer *objTimer1;QLineEdit *edit;QLineEdit *edit1;QPushButton *btn1;QPushButton *btn2;QTextToSpeech *speech;
};
#endif // WIDGET_H
widget.cc
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//标签(显示当前时间)lab1 = new QLabel(this);lab1->resize(200,50);lab1->setStyleSheet("background-color:skyblue;font:18pt;font-weight:bold");lab1->move(75,50);//标签lab2 = new QLabel("定时时间:",this);lab2->resize(150,25);lab2->move(lab1->x()+lab1->width()+30,lab1->y());//启动定时器objTimer = new QTimer(this);connect(objTimer,&QTimer::timeout,this,&Widget::timeout_slot);objTimer->start(1000);//行编辑器(输入定时时间)edit = new QLineEdit(this);edit->resize(220,50);edit->move(lab1->x()+lab1->width()+150,lab1->y());edit->setStyleSheet("background-color:skyblue;font:18pt;font-weight:bold");//输入闹钟文本edit1 = new QLineEdit(this);edit1->resize(800,200);edit1->move(0,200);edit1->setPlaceholderText("起床啦");//两个按钮(确定和取消)btn1 = new QPushButton("确定",this);btn1->resize(80,35);btn1->move(edit->x(),edit->y()+edit->height()+10);connect(btn1,&QPushButton::clicked,this,&Widget::clicked_slot);btn2 = new QPushButton("取消",this);btn2->resize(80,35);btn2->move(btn1->x()+btn1->width()+40,btn1->y());connect(btn2,&QPushButton::clicked,this,&Widget::clicked_slot2);}Widget::~Widget()
{delete ui;
}//显示时间定时器对应的函数
void Widget::timeout_slot()
{QDateTime sysDate = QDateTime::currentDateTime();QString t = sysDate.toString("hh:mm:ss");this->lab1->setText(t);
}//按钮1对应的槽函数
void Widget::clicked_slot()
{//启动定时器objTimer1 = new QTimer(this);connect(objTimer1,&QTimer::timeout,this,&Widget::timeout_slot1);objTimer1->start(1000);}//比较文本定时器对应函数
void Widget::timeout_slot1()
{//从edit读取定时时间QString s = edit->text();//从lab1读取现在的时间QString s1 = lab1->text();speech = new QTextToSpeech(this);//和lab1比价是否相同if(s==s1){//语音播报三遍int num = 3;while(num){speech->say("起床了");num--;}edit->clear();objTimer1->stop();}
}//按钮2对应的槽函数
void Widget::clicked_slot2()
{objTimer1->stop();QMessageBox::information(this,"提示","取消闹钟");edit->clear();
}
牛客