QT 闹钟

wight.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include<QTimer>     //定时器
#include<QTime>     //时间类
#include<QTimerEvent>
#include<QDateTime>     //日期时间类
#include<cstring>
#include<QTextToSpeech>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_btn_start_clicked();
void my_timeout_slot();
    void on_btn_stop_clicked();
protected:
    void timerEvent(QTimerEvent* event) override;

private:
    Ui::Widget *ui;
    QTimer *timer;

    int event_timer;
    QTextToSpeech *speech;
};
#endif // WIDGET_H

wight.c

#include "widget.h"
#include "ui_widget.h"
#include<cstring>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //实例化读者
    speech= new QTextToSpeech(this);
    setWindowTitle("闹钟");
    setWindowIcon(QIcon(":/new/1.png"));
    setFixedSize(this->size());
    ui->lineEdit->setPlaceholderText("yyyy/MM/dd hh:mm:ss");
    //实例化对象版本
    //  timer = new QTimer(this);
    //函数版本
    event_timer = this->startTimer(1000); //启动定时器
    //timer对象发射timeout信号
    //  connect(timer, &QTimer::timeout, this ,&Widget::my_timeout_slot);
}

Widget::~Widget()
{
    delete ui;
}

//启动按钮
void Widget::on_btn_start_clicked()
{
    if(ui->lineEdit->text()==nullptr)
    {
        //判断是否为空
        ui->btn_start->setEnabled(true);
        ui->btn_stop->setEnabled(false);
    }else
    {
        //启动成功后除stop外设为不可用
        ui->btn_start->setEnabled(false);
        ui->btn_stop->setEnabled(true);
        ui->lineEdit->setEnabled(false);
        ui->textEdit->setEnabled(false);
    }
}
//停止按钮
void Widget::on_btn_stop_clicked()
{
    //设为可用
    ui->btn_start->setEnabled(true);
    ui->lineEdit->setEnabled(true);
    ui->textEdit->setEnabled(true);
    ui->btn_stop->setEnabled(false);

}
//重写的定时器时间处理函数
void Widget::timerEvent(QTimerEvent *event)
{
    //判断时间ID
    if(event->timerId() == event_timer)
    {
        //获取系统日期
        QDateTime sys_dt = QDateTime::currentDateTime();
        QString dt = sys_dt.toString("yyyy/MM/dd hh:mm:ss");
        ui->label_time->setText(dt);
        QString s = ui->lineEdit->text();
        //判断时间是否一致
        if(dt==s)
        {
            speech->say(ui->textEdit->toPlainText());
        }
    }
    if(event->timerId() == 0)
    {

    }
}
实例化对象版槽函数
void Widget::my_timeout_slot()
{

//    QDateTime sys_dt = QDateTime::currentDateTime();
//    QString dt = sys_dt.toString("yyyy/MM/dd hh:mm:ss");
//    ui->label_time->setText(dt);
//    QString s = ui->lineEdit->text();
//    判断时间是否一致
//            if(dt==s)
//    {
//        speech->say(ui->textEdit->toPlainText());
//    }

}

ui.h

/********************************************************************************
** Form generated from reading UI file 'widget.ui'
**
** Created by: Qt User Interface Compiler version 5.14.2
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#ifndef UI_WIDGET_H
#define UI_WIDGET_H

#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QLabel>
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QTextEdit>
#include <QtWidgets/QWidget>

QT_BEGIN_NAMESPACE

class Ui_Widget
{
public:
    QLabel *label_time;
    QLineEdit *lineEdit;
    QPushButton *btn_start;
    QPushButton *btn_stop;
    QTextEdit *textEdit;

    void setupUi(QWidget *Widget)
    {
        if (Widget->objectName().isEmpty())
            Widget->setObjectName(QString::fromUtf8("Widget"));
        Widget->resize(800, 600);
        label_time = new QLabel(Widget);
        label_time->setObjectName(QString::fromUtf8("label_time"));
        label_time->setGeometry(QRect(60, 60, 311, 151));
        lineEdit = new QLineEdit(Widget);
        lineEdit->setObjectName(QString::fromUtf8("lineEdit"));
        lineEdit->setGeometry(QRect(390, 50, 351, 61));
        btn_start = new QPushButton(Widget);
        btn_start->setObjectName(QString::fromUtf8("btn_start"));
        btn_start->setGeometry(QRect(390, 170, 121, 51));
        btn_stop = new QPushButton(Widget);
        btn_stop->setObjectName(QString::fromUtf8("btn_stop"));
        btn_stop->setGeometry(QRect(640, 170, 111, 51));
        textEdit = new QTextEdit(Widget);
        textEdit->setObjectName(QString::fromUtf8("textEdit"));
        textEdit->setGeometry(QRect(50, 270, 701, 261));

        retranslateUi(Widget);

        QMetaObject::connectSlotsByName(Widget);
    } // setupUi

    void retranslateUi(QWidget *Widget)
    {
        Widget->setWindowTitle(QCoreApplication::translate("Widget", "Widget", nullptr));
        label_time->setText(QString());
        btn_start->setText(QCoreApplication::translate("Widget", "\345\220\257\345\212\250", nullptr));
        btn_stop->setText(QCoreApplication::translate("Widget", "\345\201\234\346\255\242", nullptr));
    } // retranslateUi

};

namespace Ui {
    class Widget: public Ui_Widget {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_WIDGET_H

运行图

猜你喜欢

转载自blog.csdn.net/m0_53451387/article/details/130456820