此函数开启定时器,并返回定时器的ID。
另外通过重载timerEvent函数来进行事件处理,其函数原型如下:
在该函数中进行事件处理,可通过定时器ID的判断(event->timerId() == m_TimerID),来处理多个定时器。
关闭定时器的函数为killTimer,函数原型如下:
class Example:publicQWidget
{
Q_OBJECT
public:
Example(QWidget*parent= 0)
~ Example()
virtualvoidtimerEvent(QTimerEvent*event)
private:
int m_TimerID //定时器ID
int m_TimerLeaveSeconds//定时器剩余秒数
}
Example::Example(QWidget*parent)
:QWidget(parent),
m_TimerID(-1),
m_TimerLeaveSeconds(0)
{
ui.setupUi(this)
m_TimerID=startTimer(1000)
}
void Example::timerEvent(QTimerEvent*event)
{
if(event->timerId() ==m_TimerID)
{
//做相应的事件处理
killTimer(m_TimerID)//达到条件,杀死定时器
}
}
在类中添加QTimer类型成员,使用start()来开始并且把它的timeout()信号函数连接到适当的槽。当这段时间过去了,它将会发射timeout()信号。
QTimer *timer = new QTimer(this)
connect(timer, SIGNAL(timeout()), this, SLOT(update()))
timer->start(1000)
start()函数是重载函数,其原型如下:
(1)void QTimer::start()
启动或者重新启动定时器,其时间间隔是interval,可通过 setInterval(int msec) 函数进行设置。
(2)void QTimer::start(int msec)
启动或者重新启动定时器,时间间隔单位是毫秒。
结束一个定时器。
connect函数进行信号与槽的连接,每隔设置的固定间隔就会执行槽函数(update())。
注意:如果在类头文件中声明了一个QTimer变量,并且在构造函数中new了,不要忘了在析构函数中delete,并置位NULL。
另外,QTimer的精确度依赖于底下的 *** 作系统和硬件。绝大多数平台支持20毫秒的精确度,一些平台可以提供更高的。如果Qt不能传送定时器触发所要求的数量,它将会默默地抛弃一些。
(1)void QTimer::singleShot(int msec, const QObject * receiver, const char * member)
这是个静态函数,能够在给定的时间间隔后调用槽,并不是多次触发该槽函数,该槽函数只执行一次。使用此函数非常方便,也不必创建本地qTimer对象。
实例:
#include <qapplication.h>
#include <qtimer.h>
int main( int argc, char **argv )
{
QApplication a( argc, argv )
QTimer::singleShot( 10*60*1000, &a, SLOT(quit()) )
... // 创建并且显示你的窗口部件
return a.exec()
}
这个示例程序会自动在10分钟之后终止(也就是600000毫秒)。
receiver是正在接收的对象并且member是一个槽。时间间隔是msec。
(2)bool QTimer::isActive () const
如果定时器正在运行,返回真,否则返回假。
(3)void QTimer::changeInterval ( int msec )
改变定时器时间间隔为msec毫秒。如果这个定时器信号是运行的,它将会被停止并且重新开始,否则它将会被开始。
接收字节数的差值并转化。1、引入需要的头文件:QNetworkInterface和QTimer。
2、在类的成员变量中定义一个QTimer对象,用于定时更新接收字节数。
3、在类的构造函数中初始化QTimer对象,并设置其时间间隔。
4、槽函数中调用QNetworkInterface:allInterfaces方法获取所有网卡接口信息,从中筛选出需要监测的网卡接口,并获取其接收字节数。
5、计算接收字节数的差值,并将其转换为人类可读的格式。
6、更新界面显示,展示网卡接收字节数。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)