QTimer,QTime的一点应用
来源:互联网 发布:选择lua不选择python 编辑:程序博客网 时间:2024/04/29 19:44
QTime可以及时流逝的时间
QTimer是“时机”;什么时间发生什么时候,发出一个SIGNAL,执行一个SLOT
例子1
#include<QtGui>
#include<windows.h>
#include<vector>
int main(int argc,char* argv[])
{
QApplication app(argc,argv);
std::vector<int> list;QTime tim;
tim.start();
for(int i=0; i<10; i++)
{
Sleep(100);
list.push_back(tim.elapsed() );
}
for(quint32 i=0; i<list.size(); i++)
{
printf("%d ", list.at(i));
}
printf("/n");return app.exec();
}则输出为,109 203 312 406 516 609 703 812 906 1016
计算一下邻差 94 109 94 110 93 94 109 94 110
差不多, 基本维持在100毫秒的延时,这基本说明Sleep的精度,也说明QTime的用法之一。
例子2:
----------------------timeout.h-----------
#include <QtCore>
class TIMEOUT:public QObject
{
Q_OBJECT
private:
QTime t;
public:
TIMEOUT()
{
t.start();
}
public slots:
void timeout()
{
qDebug("%d ", t.elapsed() );
}
};
---------------------main.cpp-------------
#include "timeout.h"
int main(int argc,char* argv[])
{
QApplication app(argc,argv);
std::vector<int> list;
QTimer timer;
timer.start(100);
TIMEOUT out;
QObject::connect(&timer,SIGNAL(timeout()), &out, SLOT(timeout()));
for (int i=0; i<6;i++)
{
Sleep(50);
// qApp->processEvents();
}
return app.exec();
}
输出为
计算一下邻差,
可见执行Sleep的时候,QTimer是没有机会fire它的signal的;它眼巴巴的等着cpu有空了,才能释放signal;
那么是不是释放了signal,但是调度处理没有时机调用slot呢?也有可能吧,
但外在的表现是一直的,即来不及处理。
When a timer fires, the application sends a QTimerEvent, and the flow of control leaves the event loop until the timer event is processed. This implies that a timer cannot fire while your application is busy doing something else. In other words: the accuracy of timers depends on
the granularity of your application.
--------------Qt的assistant
上面的例子2中,如果反注释 qApp->processEvents();
则输出为
邻差为
可见这个qApp->processEvents()的作用了 ,见缝插针,只是第一个sleep和第二个sleep之间没有来得及插针。
试图使用QTimer得到固定的,精确的,不依赖于当前任务的时延,是苦难的。
- QTimer,QTime的一点应用
- QTimer,QTime的一点应用
- QTimer,QTime的一点应用
- QTimer的应用总结
- QTimer定时器以及QTime获取时间
- Qt学习笔记:QTimer和QTime
- Qt中的QTimer的应用
- QTime
- QTime
- QTime
- Qt+halcon 第二个程序 定时器类QTimer的应用
- Qt QTimer在线程的应用与思考
- QTime中currentTime()的使用方法
- QTime的使用 计时作用
- QTime中currentTime()的使用方法
- QTime成员函数的用法
- QTime获取当前时间,QDateTime获取日期和时间,QTimer定时器,QLCDNumber数码显示框
- Qt Qtimer的使用
- asp.net:AJAX+LINQ+TreeView 动态填充多级节点
- Oracle + Sun: Java Strategy
- C语言中的面向对象
- 【经典之作】做网页时经常用到的代码集合(1)
- 寻找用哪种category的方法
- QTimer,QTime的一点应用
- GTK中用递归实现循环更新button的label
- 钥匙录制的magento视频,中文解说
- 更换图片和铃声
- 第2章 Sprites(精灵)的乐趣
- 【转】 基于朴素贝叶斯分类器的文本分类算法(上)
- 高级 DAO 编程
- 【转】基于朴素贝叶斯分类器的文本分类算法(下)
- Hibernate collection mapping