Qt timer学习

QTimer(重复和单发计时器)
  应用QTimer时,先创建一个QTimer类,利用connect将timeout()与对应槽函数连接,在调用start()函数设置定时器时间间隔,每经过设置时间后,定时器会发出一个timeout(),

  相应的槽函数就会被触发,直到调用stop()函数停止。
  举例:
    QTimer *timer = new QTimer(this);
    connect(timer,SIGNAL(timeout()),this,SLOT(function));
    timer->start(1000);
    也可以不用定义QTimer类,直接调用QTimer的成员函数singleShot(),定时器只执行一次
    QTimer::singleShot(200,this,SLOT(updateCaption()));//200/1000秒后启动功能函数
-----------------------------------------------------------------------------
2.成员函数
  1)void QTimer::singleShot(int msec,Qt::TimerType timeType,const QObject *receiver,const *member)//在规定的时间间隔调用函数
  举例:
  #include<QApplication>
  #include<QTimer>
  int main(int argc,char *argv[])
  {
    QApplication app(argc,argv);
    QTimer::singleShot(10000,&app,SLOT(quit()));
    ........


    return app.exec();
  }//功能表述,在10分钟后,应用程序将关闭
2)void QTimer::start(int msec);
  启动或者重启服务器,msec为时间间隔,没有参数时,时间间隔为0.
3)void QTimer::stop();
  停止计时器
4)void QTimer::timeout();
  当定时器时间到时,信号被发射。
5)int QTimer::timerID()
  返回正在运行的计时器的ID号,否则返回为-1
-----------------------------------------------------------------------------
注意:
QTimer的精确度依赖于底下的操作系统和硬件,绝大多数平台支持20毫秒的精确度,一些平台可以提供更高的。如果Qt不能传送定时器触发所要求的数量,它将会默默地抛弃一些。
  另一个使用QTimer的方法是为你的对象调用QObject::startTimer()和在你的类中(当然必须继承QObect)重新实现QObject::timerEvent()事件处理器。缺点是timerEvent()事件  处理器不支持像单触发器或信号那样的高级水平。
一些操作系统限制可能用到的定时器的数量,Qt会尽力在限制范围内工作。
-----------------------------------------------------------------------------

posted @ 2016-10-09 17:13  努力飞的小菜鸟  阅读(8784)  评论(0编辑  收藏  举报