【QT】Day3

1. 完成闹钟的实现:

widgt.h

复制代码
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QDebug>
#include <QTimerEvent>  //定时器事件处理函数
#include <QTime>    //时间类
#include <QTextToSpeech>   //文本转语音类头文件

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

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

   void timerEvent(QTimerEvent *e);  //重写关于定时器事件处理函数的声明

private slots:
   void on_eventStartBtn_clicked();
   void on_stopBtn_clicked();

private:
    Ui::Widget *ui;

    QString t1;
    int tid1 = startTimer(500);
    int tid2;//定义闹钟事件处理的定时器id
    QTextToSpeech *speecher;       //定义一个播报者
};
#endif // WIDGET_H

widget.cpp

复制代码
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //实例化一个播报员
    speecher = new QTextToSpeech(this);
//    QColor c = QColorDialog::getColor(QColor(0,255,255),   //初始颜色
//                                      this,                //父组件
//                                      "选择颜色");          //窗口标题
//   ui->textEdit->setTextColor(c);   //设置字体颜色,前景色
    ui->edit->setTextColor(QColor(66,90,240));
    ui->edit->setFont(QFont("隶书",15,10,false));
}

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


void Widget::on_eventStartBtn_clicked()      //"启动"按钮
{
     //启动一个定时器
     tid2 = startTimer(1000); //每隔1000ms会自动执行timerEvent函数
}


void Widget::on_stopBtn_clicked()   //"停止" 按钮
{
    ui->clockEdit->clear(); //清空闹钟时间
    ui->edit->clear();      //清空提示内容
    this->killTimer(tid2);    //关闭闹钟定时器
}


//定时器事件处理函数的定义
void Widget::timerEvent(QTimerEvent *e)
{
    if(e->timerId() == tid1) //系统时间定时器,1s刷新
    {
        //设置系统时间
        QTime sys_time = QTime::currentTime();  //QTime类对象
        t1 = sys_time.toString("hh:mm:ss");    //将时间转换成字符串

        //将字符串展示到ui界面
        ui->sysTimeLab->setText(t1);
        ui->sysTimeLab->setFont(QFont("隶书",15,10,false));
        ui->sysTimeLab->setAlignment(Qt::AlignCenter);  //居中显示
    }

    if(e->timerId() == tid2) //闹钟定时器
    {
        //从ui界面上的读取下来
        QString t2 = ui->clockEdit->text();
        if(t2 == t1 )
        {
            ui->edit->setText("三更灯火五更鸡,"
                              "正是男儿读书时,"
                              "黑发不知勤学早,"
                              "白首方悔读书少");
            speecher->say(t2);
            speecher->say(ui->edit->toPlainText());
        }
    }
}
  1. 思维导图
相关推荐
C_Liu_8 小时前
C++:类和对象(下)
开发语言·c++
coderxiaohan8 小时前
【C++】类和对象1
java·开发语言·c++
阿幸软件杂货间9 小时前
Office转PDF转换器v1.0.py
开发语言·pdf·c#
扯淡的闲人9 小时前
多语言编码Agent解决方案(5)-IntelliJ插件实现
开发语言·python
丑小鸭是白天鹅9 小时前
Kotlin协程详细笔记之切线程和挂起函数
开发语言·笔记·kotlin
sali-tec9 小时前
C# 基于halcon的视觉工作流-章34-环状测量
开发语言·图像处理·算法·计算机视觉·c#
java搬砖工-苤-初心不变9 小时前
基于 lua_shared_dict 的本地内存限流实现
开发语言·junit·lua
charlie11451419110 小时前
Kotlin 的 apply / with / run 详解
开发语言·kotlin·程序设计·面对对象
Tiger_shl10 小时前
【层面一】C#语言基础和核心语法-02(反射/委托/事件)
开发语言·c#
GW_Cheng10 小时前
分享一个vue2的tinymce配置
开发语言·javascript·ecmascript