QT DAY4

作业:要求做一个闹钟

clock.pro
QT       += core gui texttospeech

main.cpp
#include "widget.h"



int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;

    w.show();
    return a.exec();
}

widget.cpp
#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{

    this->speecher=new QTextToSpeech(this);
    this->timer=new QTimer(this);
    timer->start(1000);

    connect(timer,&QTimer::timeout,[&]()
    {
        //将QTime类对象->字符串
        QString currentTime =QTime::currentTime().toString("hh:mm:ss");
        lab1->setText(currentTime); //设置显示系统时间
        if(alarmSet&&currentTime==lint1->text())
        {
            speecher->say(lint2->text());
        }
    });

    this->resize(800,600);  //重设窗体size
    this->setWindowFlag(Qt::FramelessWindowHint);  //设置框体隐藏
    this->lab2=new QLabel(this);//用于放背景图
    lab2->resize(800,600);
    lab2->setPixmap(QPixmap(":/1.jpg"));
    lab2->setScaledContents(true);


    this->lab1=new QLabel(this);//显示系统时间
    lab1->resize(360,200);
    lab1->move(50,50);
    lab1->setAlignment(Qt::AlignCenter);
    QFont f1("宋体",30);
    lab1->setFont(f1);
    lab1->setStyleSheet("QLabel{color:rgba(234,165,67,255);border-radius:10;}");
    lab1->setText(QTime::currentTime().toString("hh:mm:ss"));
    lab1->raise();



    this->lint1=new QLineEdit(this);//一号编辑框用于设置闹钟时间
    lint1->resize(300,90);
    lint1->move(440,80);
    f1.setItalic(true);
    lint1->setFont(f1);
    lint1->setPlaceholderText("请输入闹钟时间");

    this->lint2=new QLineEdit(this);//二号编辑框用于设置语音播报文本
    lint2->resize(690,311);
    lint2->move(50,260);
    lint2->setAlignment(Qt::AlignLeft);
    lint2->setAlignment(Qt::AlignTop);
    QFont f2("楷体",15);
    lint2->setFont(f2);
    lint2->setText("三更灯火五更鸡,正式男儿读书时,黑发不知勤学早,白首方悔读书迟");


    this->btn1=new QPushButton("启动",this);//启动按钮
    btn1->resize(130,45);
    btn1->move(450,200);
    btn1->setStyleSheet("background-color:pink;border-radius:10;");
    btn1->setEnabled(true);   //设置按钮可用

    this->btn2=new QPushButton("取消",this);//取消按钮
    btn2->resize(130,45);
    btn2->move(600,200);
    btn2->setStyleSheet("background-color:skyblue;border-radius:10;");
    btn2->setEnabled(false);      //设置取消按钮不可用

    connect(this->btn1,&QPushButton::clicked,[&]()
    {
        alarmTime=lint1->text();
        alarmText=lint2->text();
        alarmSet=true;

        lint1->setEnabled(false);
        lint2->setEnabled(false);
        btn1->setEnabled(false);
        btn2->setEnabled(true);
    });
    connect(this->btn2,&QPushButton::clicked,[&]()
    {
        alarmSet=false;
        lint1->setEnabled(true);
        lint2->setEnabled(true);
        btn1->setEnabled(true);
        btn2->setEnabled(false);

    });
}

Widget::~Widget()
{
}
void Widget::mouseMoveEvent(QMouseEvent *event)
{
    this->move(event->globalPos()-temp);

}



void Widget::mousePressEvent(QMouseEvent *event)
{
    temp = event->globalPos()-this->pos(); //求中间辅助向量

    if(event->button() == Qt::RightButton)
       {
           this->close();
       }
}

widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QApplication>
#include <QWidget>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QDebug>
#include <QTime>
#include <QTimer>
#include <QMouseEvent>
#include <QDateTime>
#include <QTextToSpeech>       //文本转语音类

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
    void mousePressEvent(QMouseEvent *event) override;   //鼠标按下事件处理函数版
    void mouseMoveEvent(QMouseEvent *event) override; //鼠标移动事件处理函数
signals:




private:
    QTimer *timer;           //定义定时器变量
    QPoint temp;
    QTextToSpeech *speecher;     //定义播报员指针


    QLabel *lab1;  //显示系统时间
    QLabel *lab2;  //用于放背景图
    QLineEdit *lint1; //一号编辑框用于设置闹钟时间
    QLineEdit *lint2; //二号编辑框用于设置语音播报文本
    QPushButton *btn1; //启动按钮
    QPushButton *btn2; //取消按钮
    bool alarmSet=false;
    QString alarmTime;
    QString alarmText;


};
#endif // WIDGET_H

思维导图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值