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

思维导图

相关推荐
StringerChen2 分钟前
Qt ui提升窗口的头文件找不到
开发语言·qt
数据小爬虫@8 分钟前
如何利用PHP爬虫获取速卖通(AliExpress)商品评论
开发语言·爬虫·php
java1234_小锋1 小时前
MyBatis如何处理延迟加载?
java·开发语言
FeboReigns1 小时前
C++简明教程(10)(初识类)
c语言·开发语言·c++
学前端的小朱1 小时前
处理字体图标、js、html及其他资源
开发语言·javascript·webpack·html·打包工具
摇光932 小时前
js高阶-async与事件循环
开发语言·javascript·事件循环·宏任务·微任务
沐泽Mu2 小时前
嵌入式学习-QT-Day07
c++·qt·学习·命令模式
沐泽Mu2 小时前
嵌入式学习-QT-Day09
开发语言·qt·学习
小猿_002 小时前
C语言实现顺序表详解
c语言·开发语言
余~~185381628002 小时前
NFC 碰一碰发视频源码搭建技术详解,支持OEM
开发语言·人工智能·python·音视频