Qt 有没有系统级的定时器,该怎么处理

Qt 有没有系统级的定时器
例如 

全局变量
  int state;
  QTimer *timer;
------------------------ 
  timre = new QTimer;
  connect(timer,SIGNAL(timeout()),this,SLOT( myfun()));
  timer->start(1000);


void myfun()
{
  state=1;
  timer->start(1000);
}
------------------------

state = 0;
while(state != 1)
{
  usleep(10000);
}
如上代码所示,我在同一个线程内创建了一个定时器, 然后执行到while()循环,现在问题是因为是在一个线程中的代码,当执行到while()语句的时候,程序一直循环,根本相应不了定时器的信号。
1、我想问下qt编程里有没有系统级别的定时器,同线程内和while循环不冲突。
2、有没有什么更好的解决上述问题的方法, 比如多线程里定时。







------解决方案--------------------
没有,对于耗时操作要放到次线程中处理,否则不但是定时器,就连界面也会卡死的。
------解决方案--------------------
> 1、我想问下qt编程里有没有系统级别的定时器,同线程内和while循环不冲突。
没有
因为Qt里面的timeout是一个signal,如果Qt无法进入事件循环,自然无法发出这个signal


> 2、有没有什么更好的解决上述问题的方法, 比如多线程里定时。
同一个线程只能做一件事情,要么在事件循环中等待信号或者其他事件,要么正在执行某段代码
如果正在执行某段代码,是不可能立刻跳转到信号的处理中的,必须要等到进入事件循环中进行处理才行


你的代码不应该执行sleep操作,这是错误的。你只需要进入事件循环就好了。