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
相关推荐
大佬,救命!!!2 分钟前
python对应sql操作
开发语言·python·sql·学习笔记·学习方法
逸风尊者7 分钟前
开发可掌握的知识:推荐系统
java·后端·算法
IT方大同7 分钟前
C语言选择控制结构
c语言·开发语言
名誉寒冰8 分钟前
深入理解fd_set:从基础到实战应用(Linux/C++)
java·linux·c++
A24207349309 分钟前
js模糊搜索
开发语言·javascript·ecmascript
Learner__Q11 分钟前
每天五分钟:二分查找-LeetCode高频题解析_day4
python·算法·leetcode
智者知已应修善业14 分钟前
【字符串提取3个整数求和】2024-2-11
c语言·c++·经验分享·笔记·算法
Darkershadow15 分钟前
Python学习之使用pycharts
开发语言·python
唯唯qwe-18 分钟前
Day21:贪心算法 | 加油站,分发糖果
算法·贪心算法
晚秋大魔王20 分钟前
C语言-宏的基础、进阶、高级、内置宏的用法
c语言·开发语言·