QT:定时器的简单使用

QT定时器的简单使用

定时器是用来处理周期性事件的一种对象,类似于硬件定时器。例如设置一个定时器的定时周期为 1000 毫秒,那么每 1000 毫秒就会发射定时器的 timeout() 信号,在信号关联的槽函数里就可以做相应的处理。

Qt 中的定时器类是 QTimer。QTimer 不是一个可见的界面组件,在 UI 设计器的组件面板里找不到它。计时器是 QTime 类。

QTimer 主要的属性是 interval,是定时中断的周期,单位毫秒。QTimer 主要的信号是 timeout(),在定时中断时发射此信号,要想在定时中断里做出响应,这就需要编写 timeout() 信号的槽函数。定义一个用于处理定时器的类:

class Recviver : public QObject
{
    Q_OBJECT
public:
    explicit Recviver(QObject *parent = nullptr);
private:
    QTimer *fTimer;   
public slots:
    void on_timer_timeout();
};

这里定义了一个定时器 fTimer。还定义了一个槽函数 on_timer_ timeout(),作为定时器的 timeout() 信号的响应槽函数。

需要在自定义类的构造函数里创建定时器,并进行信号与槽的关联。代码如下:

Recviver::Recviver(QObject *parent) : QObject(parent)
{
    fTimer=new QTimer(this);
    fTimer->stop();
    fTimer->setInterval (1000) ;//设置定时周期,单位:毫秒
    connect(fTimer,SIGNAL(timeout()),this,SLOT(on_timer_timeout()));
}

槽函数 on_timer_timeout() 的实现代码如下:

void Recviver::on_timer_timeout()
{
    static int num = 0;
    qDebug()<<"num: "<<num++;
}

设置定时器的周期,只需调用 Qtimer::setlnterval() 函数即可。
QTimer::start() 函数用于启动定时器,在main函数中启动定时器:

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    Recviver recvData;          
    recvData.fTimer->start();
    return a.exec();
}

运行结果如图所示,每隔1秒执行一次定时器,num自加一次。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值