本文主要是介绍qtimer 测试研究,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
------------------------------------------------------------
author: hjjdebug
date: 2024年 08月 25日 星期日 09:58:23 CST
description: qtimer 测试研究
------------------------------------------------------------
测试代码:
hjj@hjj-7090:~/test/qtimer$ cat main.cpp
#include <QApplication>
#include "mytimer.h"int main(int argc, char *argv[])
{QApplication app(argc,argv);MyTimer *timer= new MyTimer();timer->start();return app.exec();
}hjj@hjj-7090:~/test/qtimer$ cat mytimer.h
#ifndef _MY_TIMER_H
#define _MY_TIMER_H
#include <QTimer>
class MyTimer : public QObject
{Q_OBJECT
public:MyTimer();~MyTimer();void start();public slots:void slotTimerout();
private:QTimer * m_timer=NULL;};
#endif
hjj@hjj-7090:~/test/qtimer$ cat mytimer.cpp
#include "mytimer.h"
#include <stdio.h>
MyTimer::MyTimer()
{m_timer = new QTimer();m_timer->setSingleShot(true); //默认singleshot 为假,是周期性timerconnect(m_timer,SIGNAL(timeout()),this,SLOT(slotTimerout()));
}
MyTimer::~MyTimer()
{if(m_timer){delete m_timer;m_timer = NULL;}
}void MyTimer::slotTimerout()
{printf("receiver timer signal!\n");
}
void MyTimer::start()
{ //允许设0值, 但不允许设负值m_timer->start(0);
}
执行结果:
./qtimer
receiver timer signal!
收获:
1. 花半小时,全部以己之力书写的代码,参考qtimer.h头文件.
2. qtimer 默认是周期性timer, 时间到后会重新开始计时
若想使其成为一次性的, 可调用setSingleShot(true) 函数
3. start(int msec)
当设置为0ms 时,会立即触发timeout, 不允许设负值(有警告输出),
这篇关于qtimer 测试研究的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!