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
相关推荐
Beyond_System|系统之外19 分钟前
【学编程】Python基础编程题100道(21-60)
开发语言·python·算法
景熙552341 分钟前
15.Java 8 Stream 流入门到实战
java·开发语言·数据结构
汉克老师2 小时前
GESP2026年9月认证C++六级( 第三部分编程题(1、数组划分))精讲
c++·gesp·小学生·学c++编程
千里码aicood2 小时前
基于PLC与机器视觉的智能分拣控制系统设计
c++·自动化·plc
漂流瓶jz2 小时前
UVA-1442 洞穴 题解答案代码 算法竞赛入门经典第二版
c++·算法·题解·aoapc·算法竞赛入门经典·uva
朽棘不雕2 小时前
进一步了解模板
c++
Bruce_Liuxiaowei3 小时前
Python 实例赋值遮蔽类属性:一个从不报错的静默陷阱
开发语言·python·语法糖
叠层归一研究院3 小时前
基于极限自指的叠层归一宇宙结构理论——无元外部封闭系统的内生区分模型
人工智能·经验分享·算法·agi
Selvaggia4 小时前
Diffusion Model 的基本原理与模型架构
算法
aramae5 小时前
MySQL内置函数(7)
开发语言·笔记·后端·mysql·其他