制作小闹钟
widget.cpp文件
#include "widget.h"
#include "ui_widget.h"
#include <QTimer>
#include <QDateTime>
#include <unistd.h>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
//给定时器事件指针实例化
t1=new QTimer(this);
t2=new QTimer(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_timer1_clicked()
{
//调用开启定时器事件
t1->start(1000);
//每隔一秒(msec毫秒),会自动发射一个timeout信号,可以在槽函数种书写逻辑
connect(t1,&QTimer::timeout,this,&Widget::on_timer1_sloat);
ui->pushButton->setEnabled(false);
}
//处理timeout信号的槽
void Widget::on_timer1_sloat()
{
//获取系统时间
QDateTime currentTime = QDateTime::currentDateTime();
QString timeText = currentTime.toString("yyyy年-MM月-dd日-ddd HH:mm:ss");
//将时间放在lab中
ui->textEdit->setText(timeText);
QString timeText1 = currentTime.toString("HH:mm");
if(ui->lineEdit->text() == timeText1)
{
if(flag==0)
{
speech.say(ui->lineEdit_2->text());
sleep(5);
}
}
}
void Widget::on_pushButton_2_clicked()
{
flag = 0;
ui->pushButton_2->setEnabled(false);
ui->pushButton->setEnabled(true);
}
void Widget::on_pushButton_clicked()
{
flag = 1;
ui->pushButton_2->setEnabled(true);
}
void Widget::on_lineEdit_textEdited()
{
}
void Widget::on_lineEdit_2_textEdited()
{
}
void Widget::on_textEdit_textChanged()
{
}
widget.h文件
#ifndef WIDGET_H
#define WIDGET_H
#include <QTimer>
#include <QDateTime>
#include <QWidget>
#include <QTextToSpeech>
#include <QTimerEvent>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = nullptr);
~Widget();
signals:
void signal_1();
private slots:
void on_timer1_clicked();
void on_timer1_sloat();//自定义槽,处理timeout信号
void on_textEdit_textChanged();
void on_pushButton_2_clicked();
void on_lineEdit_textEdited();
void on_lineEdit_2_textEdited();
void on_pushButton_clicked();
private:
Ui::Widget *ui;
QTimer *t1;
QTimer *t2;
QString string;
QTextToSpeech speech;
int flag=0;
};
#endif // WIDGET_H
main.cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}