12.12 Qt中的事件机制

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#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) override;

private slots:
    void on_pushButton_clicked();

private:
    Ui::Widget *ui;
    int id; //定时器返回的标志
    int sid;
    QTextToSpeech *speecher;
};
#endif // WIDGET_H

main.cpp
 

#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

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;
    id=startTimer(1000);
}

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

void Widget::timerEvent(QTimerEvent *e)
{
    if(e->timerId()==id)
    {
        //获取系统时间
        QTime sys_time = QTime::currentTime();
        QString s = sys_time.toString("hh.mm.ss");
        ui->systemtimelabel->setText(s);

    }
    if(e->timerId()==sid)
    {
        //判断系统时间和闹钟时间是否一致
        if(ui->systemtimelabel->text()==ui->lineEdit->text())
        {
            //播报
            int i=0;
            while(i<5)
            {
                speecher->setVoice(QVoice());
                speecher->say(ui->label->text());
                i++;
            }
        }
    }
}


void Widget::on_pushButton_clicked()
{
    if(ui->pushButton->text()=="启动")
    {
        sid = startTimer(1000);
        ui->pushButton->setText("关闭");

    }
    else
    {
        killTimer(sid);
        ui->pushButton->setText("启动");
    }
}


相关推荐

  1. Qt事件事件处理

    2023-12-18 04:16:02       60 阅读
  2. Qt事件循环

    2023-12-18 04:16:02       34 阅读
  3. Qt事件处理机制2-事件函数传播

    2023-12-18 04:16:02       34 阅读
  4. Qt事件机制

    2023-12-18 04:16:02       37 阅读
  5. Qt触屏事件

    2023-12-18 04:16:02       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-18 04:16:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-18 04:16:02       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-18 04:16:02       82 阅读
  4. Python语言-面向对象

    2023-12-18 04:16:02       91 阅读

热门阅读

  1. Python按字母顺序返回字典的键和值

    2023-12-18 04:16:02       61 阅读
  2. nestjs使用redis

    2023-12-18 04:16:02       69 阅读
  3. React 实现列表页和列表详情页功能

    2023-12-18 04:16:02       53 阅读
  4. 跳跃游戏 + 45. 跳跃游戏 II

    2023-12-18 04:16:02       72 阅读
  5. QEMU源码全解析 —— virtio(10)

    2023-12-18 04:16:02       62 阅读
  6. 解决Qt UI界面卡顿的优化方法

    2023-12-18 04:16:02       68 阅读
  7. C++11——lambda

    2023-12-18 04:16:02       55 阅读
  8. 【力扣100】141.环形链表

    2023-12-18 04:16:02       58 阅读
  9. 重启docker容器后,ssh无法访问且浏览器无法访问

    2023-12-18 04:16:02       43 阅读