QT定時器的兩種應用(QObject就有timerEvent事件,一種什么樣的居心呢?)


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)在類的構造函數中設定如下:

  1. QTimer *timer=new QTimer(this);
  2. connect(timer,SIGNAL(timeout()),this,SLOT(timeoutslot()));//timeoutslot()為自定義槽
  3. timer->start(1000);
[c++]  view plain copy
 
 
  1. QTimer *timer=new QTimer(this);  
  2.    connect(timer,SIGNAL(timeout()),this,SLOT(timeoutslot()));//timeoutslot()為自定義槽  
  3.    timer->start(1000);  

然而:所有Qobject的子類在設置定時器時都不必加載一個Qtimer對象,因為這樣造成了資源浪費且需要書寫多余的函數,很不方便.最好的辦法是重載timerEvent函數,具體寫法如下:

  1. class Gui_DlgViewCtrlDatum : public QDialog
  2. {
  3. Q_OBJECT
  4. public:
  5. Gui_DlgViewCtrlDatum( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
  6. ~Gui_DlgViewCtrlDatum();
  7. protected:
  8. void timerEvent( QTimerEvent * );
  9. };
  10. void Gui_DlgViewCtrlDatum::timerEvent( QTimerEvent *e )
  11. {
  12. //statements
  13. }
[c++]  view plain copy
 
 
  1. class Gui_DlgViewCtrlDatum : public QDialog  
  2. {  
  3. Q_OBJECT  
  4. public:  
  5. Gui_DlgViewCtrlDatum( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );  
  6. ~Gui_DlgViewCtrlDatum();  
  7. protected:  
  8. void timerEvent( QTimerEvent * );  
  9. };  
  10. void Gui_DlgViewCtrlDatum::timerEvent( QTimerEvent *e )  
  11. {  
  12. //statements  
  13. }  

再在Gui_DlgViewCtrlDatum的構造函數中設置時間間隔:
startTimer(50);//單位為毫秒

這樣,每隔50毫秒,函數timerEvent便會被調用一次.

網上又說:

定時器事件的優先級很低,如果需要多個定時器,那么跟蹤每一個定時器的ID是很費時的。這種情況下,較好的方法是為每一個定時器創建一個QTimer對象。在每一個時間間隔內,QTimer發出一個timeout()信號。QTimer還支持一次性定時器(只發出一次timeout()信號的定時器)。

 

 

http://blog.csdn.net/u013394556/article/details/42775213


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM