QTday4

闹钟头文件

#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);
    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值