歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Qt之QTimer----每秒都有自己要干的事

Qt之QTimer----每秒都有自己要干的事

日期:2017/3/1 10:22:10   编辑:Linux編程

有時候有些地方我們不得不干重復的事情,怎麼辦。不可能來個for,while無限循環吧,讓程序一直卡在那裡占cpu吧。

那我們就用定時器吧,每秒做我們想做的事,這樣才是硬道理。

頭文件

  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3. #include <QMainWindow>
  4. #include <QTimer>
  5. #include <QDebug>
  6. class QTime;
  7. namespace Ui {
  8. class MainWindow;
  9. }
  10. class MainWindow : public QMainWindow
  11. {
  12. Q_OBJECT
  13. public:
  14. explicit MainWindow(QWidget *parent = 0);
  15. ~MainWindow();
  16. QTimer *timer;
  17. int i;
  18. private:
  19. Ui::MainWindow *ui;
  20. protected slots:
  21. void timerDone();
  22. void slotTime();
  23. };
  24. #endif // MAINWINDOW_H

源文件

  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. MainWindow::MainWindow(QWidget *parent) :
  4. QMainWindow(parent),
  5. ui(new Ui::MainWindow)
  6. {
  7. ui->setupUi(this);
  8. i=1;
  9. timer = new QTimer();
  10. this->connect(timer,SIGNAL(timeout()),this,SLOT(timerDone()));
  11. timer->start( 1000 ); //一秒鐘後開始觸發,然後一秒一次
  12. timer->singleShot(2000,this,SLOT(slotTime())); //2秒鐘觸發一次
  13. }
  14. MainWindow::~MainWindow()
  15. {
  16. delete ui;
  17. }
  18. void MainWindow::timerDone()
  19. {
  20. ui->label->setText(tr("%1").arg(i));
  21. i++;
  22. qDebug()<<"wyz========a:"<<i;
  23. }
  24. void MainWindow::slotTime()
  25. {
  26. i++;
  27. qDebug()<<"wyz========b:"<<i;
  28. }

效果:

D:\opt\QtOpt\qtime-build-desktop-Qt_4_7_4__qt4_7_0____\debug\qtime.exe 啟動中...

Init CriticalSection spin count wyz========a: 2

wyz========b: 3

wyz========a: 4

wyz========a: 5

wyz========a: 6

wyz========a: 7

wyz========a: 8

wyz========a: 9

Copyright © Linux教程網 All Rights Reserved