QT-定时器使用

本文介绍了在QT中使用两种方法实现TCP/UDP调试助手的定时发送功能:一是通过QObject的自带定时器,二是通过Timer类结合信号与槽机制。详细解释了如何定义事件处理函数、设置定时器、连接信号和关闭定时器的过程。
摘要由CSDN通过智能技术生成

前言

在编写TCP/UDP调试助手时,想添加一个定时发送指定消息给到目标地址的功能,故而查看QT帮助文档并进行总结。

一、调用定时器的两种途径

1.通过基类object自带的定时器实现

*1*重定义定时器的事件处理函数

//定义函数前,在该类的公共变量中声明该类
public:
    void timerEvent(QTimerEvent *event) override;

//然后重新定义该函数功能
void MainWindow::timerEvent(QTimerEvent *event)
{
    if(event->timerId() == time_id){ //QTimerEvent类中包含timerId(),用于区分不同定时器
        static int i;
        qDebug()<<"时间到!"<<i++;
    }

}

*2*开启定时器

int QObject::startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer)
例:time_id = startTimer(700);//单位为ms,返回值为创建定时器的id序号,用于区分其他定时器
                            //在执行killTimer(time_id)之前,定时器每到达指定时间,会自动执行timerEvent函数

*3*关闭定时器

void QObject::killTimer(int id)
例子:killTimer(time_id);//关闭目标定时器

2.通过Timer类实现

*1*创建一个Timer对象

time = new QTimer(this);

*2*将对象的超时信号与指定函数进行绑定

connect(timer , &QTimer::timeout , this , &MainWindow::time_out);
//当定时器timer超时时,自动发送timeout信号给予当前类,当前类接收到信号后执行指定函数time_out(信号与槽机制)

*3*声明并定义处理函数

//先在该类的私有槽内声明处理函数
private slots:
    void time_out();


//然后定义处理函数
void MainWindow::time_out()
{
    static int i;
    qDebug()<<"时间到!"<<i++;
}

*4* 设置超时时间并开始

    time->setInterval(700);//单位为ms,默认值为0
    time->start();//开启定时器

*5*关闭定时器

time->stop();//在此之前,会不断处理指定槽函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

耀锋芒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值