2、使用QNetworkRequest实现一个简单的网络请求,通过QNetworkAccessManager::get()开始获取Qt官网的HTML页面内容,请求过程是异步的,通过使用QEventLoop启动一个事件循环让其同步处理,将QTimer的timeout()信号以及QNetworkReply的finished()信号连接至其quit()槽函数,保证在定时器过期之后或者网络响应完成后事件循环得到退出,不至于一直处于阻塞状态即可。
默认每到100ms都触发,如果设置
QTimer timer
timer.setSingleShot(true)
那么这个timer开始计时后只触发一次
Qt中定时器用于间隔一段时间执行一次 *** 作,循环执行,直至定时器停止或被杀死。有两种使用方法, QObject类 与 QTimer类 。个人比较习惯使用QTimer类,信号与槽方式比较简洁灵活。
方法一:QObject中的定时器的使用,需要用到三个函数
1、int QObject::startTimer ( int interval ) //开启定时器,执行周期为interval毫秒。
此函数开启成功后,返回这个定时器的ID,并每隔interval毫秒时间进入一次timeEvent函数,直至定时器停止或被杀死。
2、void QObject::timeEvent ( QTimerEvent *event ) //需重写timeEvent函数,相关 *** 作在此函数中执行。
当定时器超时后会进入此函数,可以通过event->timerId()来确定当前执行的定时器是哪个。
3、void QObject::killTimer ( int id ) //杀死目的id号的定时器,停止循环。
示例:
方法二:使用QTimer类(信号与槽)
1、创建QTimer类对象,
QTimer *m_timer= new QTimer ( this )
2、连接信号与槽,定时器超时后会发出 timeout () 信号,超时时执行槽函数 mySlot()
connect ( timer , SIGNAL ( timeout()) , this ,SLOT( mySlot()) )
3、开启定时器,周期为msec毫秒
timer->start( msec )
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)