Qt 第三讲 手动拖动ui界面组件,事件处理机制,实现简单闹钟

手动拖动ui界面组件,实现闹钟

源文件

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

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

    ui->btn_end->setEnabled(false);

    speecher = new QTextToSpeech(this);

    QTime sys_time = QTime::currentTime();
    QString t = sys_time.toString("hh:mm:ss");
    ui->label_time->setText(t);
    ui->label_time->setAlignment(Qt::AlignCenter);
}

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

//开始按钮
void Widget::on_btn_start_clicked()
{
    
    ttId = startTimer(1000);//定时

    //锁定
    ui->btn_start->setEnabled(false);
    ui->jishi_edit->setEnabled(false);
    ui->label_time->setEnabled(false);
    ui->textEdit->setEnabled(false);
    //解锁
    ui->btn_end->setEnabled(true);

}

//定时器事件处理函数的定义
void Widget::timerEvent(QTimerEvent *e)
{

    if(e->timerId() == ttId){

        QTime sys_time = QTime::currentTime();
        QString t = sys_time.toString("hh:mm:ss");
        ui->label_time->setText(t);
        ui->label_time->setAlignment(Qt::AlignCenter);

        QString sj = ui->jishi_edit->text();

        if(sj == t){
            speecher->say(ui->textEdit->toPlainText());
        }
    }
}

//关闭按钮
void Widget::on_btn_end_clicked()
{
    this->killTimer(tId);
    //解锁
    ui->btn_start->setEnabled(true);
    ui->jishi_edit->setEnabled(true);
    ui->label_time->setEnabled(true);
    ui->textEdit->setEnabled(true);
    //锁定
    ui->btn_end->setEnabled(false);


}

头文件

cpp 复制代码
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTimerEvent> //定时器时间处理函数
#include <QTime> //时间类
#include <QLabel>
#include <QtTextToSpeech>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

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

     void timerEvent(QTimerEvent *e);

     QTextToSpeech *speecher;


//重写的关于定时器事件的处理函数
private slots:
    void on_btn_start_clicked();
    
    void on_btn_end_clicked();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H
相关推荐
AA陈超1 分钟前
虚幻引擎5 GAS开发俯视角RPG游戏 P05-05 游戏效果委托
c++·游戏·ue5·游戏引擎·虚幻
杨小码不BUG5 分钟前
Davor的北极探险资金筹集:数学建模与算法优化(洛谷P4956)
c++·算法·数学建模·信奥赛·csp-j/s
eqwaak021 分钟前
数据预处理与可视化流水线:Pandas Profiling + Altair 实战指南
开发语言·python·信息可视化·数据挖掘·数据分析·pandas
mit6.82427 分钟前
10.5 数位dp
c++·算法
初圣魔门首席弟子33 分钟前
C++ STL 向量(vector)学习笔记:从基础到实战
c++·笔记·学习
青草地溪水旁44 分钟前
Visual Studio Code中launch.json深度解析:C++调试的艺术
c++·vscode·json
m0_552200821 小时前
《UE5_C++多人TPS完整教程》学习笔记62 ——《P63 多人游戏中的开火特效(Fire Effects in Multiplayer)》
c++·游戏·ue5
共享家95271 小时前
QT-常用控件(一)
开发语言·qt
Y学院1 小时前
实战项目:鸿蒙多端协同智能家居控制 App 开发全流程
开发语言·鸿蒙
liu****1 小时前
基于websocket的多用户网页五子棋(九)
服务器·网络·数据库·c++·websocket·网络协议·个人开发