您的位置:首页 > 编程语言 > Qt开发

QT中定时器的使用方法

2017-05-01 22:42 387 查看
 

 

QT中定时器的使用方法

(1)重载timerEvent(QTimerEvent *)函数,然后再在类的构造函数中设置时间间隔

   startTimer(50);//单位为毫秒

(2)在类的构造函数中设定如下:

   QTimer *timer=new QTimer(this);

   connect(timer,SIGNAL(timeout()),this,SLOT(timeoutslot()));//timeoutslot()为自定义槽

   timer->start(1000);

QT定时器的两种应用
2009-10-14 8:44
可以用槽函数实现

(1)重载timerEvent(QTimerEvent *)函数,然后再在类的构造函数中设置时间间隔

startTimer(50);//单位为毫秒

(2)在类的构造函数中设定如下:

QTimer *timer=new QTimer(this);
connect(timer,SIGNAL(timeout()),this,SLOT(timeoutslot()));//timeoutslot()为自定义槽
timer->start(1000);



[c++]
view plaincopyprint?

QTimer *timer=new QTimer(this);  
   connect(timer,SIGNAL(timeout()),this,SLOT(timeoutslot()));//timeoutslot()为自定义槽  
   timer->start(1000);  



[c++]
view plain
copy

print?

QTimer *timer=new QTimer(this);  
   connect(timer,SIGNAL(timeout()),this,SLOT(timeoutslot()));//timeoutslot()为自定义槽  
   timer->start(1000);  



QTimer *timer=new QTimer(this);
connect(timer,SIGNAL(timeout()),this,SLOT(timeoutslot()));//timeoutslot()为自定义槽
timer->start(1000);

然而:所有Qobject的子类在设置定时器时都不必加载一个Qtimer对象,因为这样造成了资源浪费且需要书写多余的函数,很不方便.最好的办法是重载timerEvent函数,具体写法如下:

class Gui_DlgViewCtrlDatum :public QDialog
{
Q_OBJECT
public:
Gui_DlgViewCtrlDatum( QWidget* parent = 0, constchar* name = 0,bool
modal = FALSE, WFlags fl = 0 );
~Gui_DlgViewCtrlDatum();
protected:
void timerEvent( QTimerEvent * );
};
void Gui_DlgViewCtrlDatum::timerEvent( QTimerEvent *e )
{
//statements
}



[c++]
view plaincopyprint?

class Gui_DlgViewCtrlDatum : public QDialog  
{  
Q_OBJECT  
public:  
Gui_DlgViewCtrlDatum( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );  
~Gui_DlgViewCtrlDatum();  
protected:  
void timerEvent( QTimerEvent * );  
};  
void Gui_DlgViewCtrlDatum::timerEvent( QTimerEvent *e )  
{  
//statements  
}  



[c++]
view plain
copy

print?

class Gui_DlgViewCtrlDatum : public QDialog  
{  
Q_OBJECT  
public:  
Gui_DlgViewCtrlDatum( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );  
~Gui_DlgViewCtrlDatum();  
protected:  
void timerEvent( QTimerEvent * );  
};  
void Gui_DlgViewCtrlDatum::timerEvent( QTimerEvent *e )  
{  
//statements  
}  



class Gui_DlgViewCtrlDatum : public QDialog
{
Q_OBJECT
public:
Gui_DlgViewCtrlDatum( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
~Gui_DlgViewCtrlDatum();
protected:
void timerEvent( QTimerEvent * );
};
void Gui_DlgViewCtrlDatum::timerEvent( QTimerEvent *e )
{
//statements
}

再在Gui_DlgViewCtrlDatum的构造函数中设置时间间隔:

startTimer(50);//单位为毫秒

这样,每隔50毫秒,函数timerEvent便会被调用一次.

网上又说:

定时器事件的优先级很低,如果需要多个定时器,那么跟踪每一个定时器的ID是很费时的。这种情况下,较好的方法是为每一个定时器创建一个QTimer对象。在每一个时间间隔内,QTimer发出一个timeout()信号。QTimer还支持一次性定时器(只发出一次timeout()信号的定时器)。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: