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
相关推荐
✿ ༺ ོIT技术༻18 分钟前
剑指offer第2版:动态规划+记忆化搜索
算法·动态规划·记忆化搜索
Humbunklung24 分钟前
Rust方法语法:赋予结构体行为的力量
开发语言·后端·rust
萧曵 丶30 分钟前
Rust 内存结构:深入解析
开发语言·后端·rust
算法练习生36 分钟前
Qt核心类QWidget及其派生类详解
开发语言·c++·qt
oioihoii42 分钟前
C++11标准库算法:深入理解std::none_of
java·c++·算法
1024小神1 小时前
tauri项目在windows上的c盘没有权限写入文件
c语言·开发语言·windows
老虎06271 小时前
数据结构(Java)--位运算
java·开发语言·数据结构
yanjiaweiya1 小时前
云原生-集群管理续
java·开发语言·云原生
Swift社区1 小时前
Swift 解 LeetCode 320:一行单词有多少种缩写可能?用回溯找全解
开发语言·leetcode·swift
写不出来就跑路1 小时前
暑期实习感悟与经验分享:从校园到职场的成长之路
java·开发语言·经验分享·spring boot