【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. 思维导图
相关推荐
不穿格子的程序员6 分钟前
从零开始刷算法-栈-括号匹配
java·开发语言·
Tony小周18 分钟前
使用QKeyEvent keyPress(QEvent::KeyPress, key模拟键盘发送事件,会导致主程序卡死
嵌入式硬件·qt
雪域迷影22 分钟前
C#中通过get请求获取api.open-meteo.com网站的天气数据
开发语言·http·c#·get
yue00823 分钟前
C#类继承
java·开发语言·c#
Want59530 分钟前
Python汤姆猫
开发语言·python
Larry_Yanan1 小时前
QML学习笔记(五十)QML与C++交互:QML中单例C++对象
开发语言·c++·笔记·qt·学习·ui·交互
凯芸呢1 小时前
Java中的数组(续)
java·开发语言·数据结构·算法·青少年编程·排序算法·idea
竹竹零1 小时前
JacksonUtil--序列化与反序列化
java·开发语言·windows
sheji34161 小时前
【开题答辩全过程】以 基于Java的旅游网站的设计与开发为例,包含答辩的问题和答案
java·开发语言·旅游
yue0082 小时前
C# XML文件的读写V2.0
xml·开发语言·c#