利用qt设计一个闹钟
源文件代码
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
tid=this->startTimer(1000); //启动定时器,让系统时间开始走动
speecher = new QTextToSpeech(this);
time = new QTimer(this); //给定时器指针实例化空间
connect(time,&QTimer::timeout,this,&Widget::timeout_slot);
}
Widget::~Widget()
{
delete ui;
}
//定时器事件函数重载定义
void Widget::timerEvent(QTimerEvent * e)
{
QDateTime sys_time;
if(e->timerId() == tid)
{
sys_time = QDateTime::currentDateTime();
ui->systimelabel->setText(sys_time.toString("yyyy-MM-dd hh:mm:ss"));
}
}
void Widget::on_startbtn_clicked()
{
time->start(1000);
ui->startbtn->setEnabled(false); //按下启动按钮以后,让其他组件无法再被操作
ui->usrtimeedit->setEnabled(false);
ui->textEdit->setEnabled(false);
}
void Widget::timeout_slot()
{
QDateTime sys_time=QDateTime::currentDateTime();
if(sys_time.toString("yyyy-MM-dd hh:mm:ss") ==ui->usrtimeedit->text()) //比较
{
speecher->say(ui->textEdit->toPlainText());
ui->usrtimeedit->clear();
ui->textEdit->clear();
}
}
void Widget::on_closebtn_clicked()
{
time->stop();
ui->startbtn->setEnabled(true); //按下关闭按钮,其他组件恢复正常
ui->usrtimeedit->setEnabled(true);
ui->textEdit->setEnabled(true);
}
头文件代码
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QTimer> //定时器类的头文件
#include <QTime>
#include <QDateTime>
#include <QTextToSpeech>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = nullptr);
~Widget();
//声明定时器事件处理函数
void timerEvent(QTimerEvent * e)override;
private slots:
void on_startbtn_clicked();
void timeout_slot();
void on_closebtn_clicked();
private:
Ui::Widget *ui;
int tid; //定义一个定时器标识
QTextToSpeech *speecher;
QTimer *time; //定义一个定时器指针
};
#endif // WIDGET_H
闹钟界面设计
按下启动按钮以后,其余组件无法操作
闹钟到达以后自动播报并且清零