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 为假,是周期性timer
	connect(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, 不允许设负值(有警告输出),
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值