有時候有些地方我們不得不干重復的事情,怎麼辦。不可能來個for,while無限循環吧,讓程序一直卡在那裡占cpu吧。
那我們就用定時器吧,每秒做我們想做的事,這樣才是硬道理。
頭文件
- #ifndef MAINWINDOW_H
- #define MAINWINDOW_H
-
- #include <QMainWindow>
- #include <QTimer>
- #include <QDebug>
- class QTime;
- namespace Ui {
- class MainWindow;
- }
-
- class MainWindow : public QMainWindow
- {
- Q_OBJECT
-
- public:
- explicit MainWindow(QWidget *parent = 0);
- ~MainWindow();
- QTimer *timer;
- int i;
- private:
- Ui::MainWindow *ui;
-
- protected slots:
- void timerDone();
- void slotTime();
- };
-
- #endif // MAINWINDOW_H
源文件
- #include "mainwindow.h"
- #include "ui_mainwindow.h"
-
- MainWindow::MainWindow(QWidget *parent) :
- QMainWindow(parent),
- ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- i=1;
- timer = new QTimer();
- this->connect(timer,SIGNAL(timeout()),this,SLOT(timerDone()));
-
- timer->start( 1000 ); //一秒鐘後開始觸發,然後一秒一次
-
- timer->singleShot(2000,this,SLOT(slotTime())); //2秒鐘觸發一次
- }
-
- MainWindow::~MainWindow()
- {
- delete ui;
- }
-
- void MainWindow::timerDone()
- {
- ui->label->setText(tr("%1").arg(i));
- i++;
- qDebug()<<"wyz========a:"<<i;
- }
-
- void MainWindow::slotTime()
- {
- i++;
- qDebug()<<"wyz========b:"<<i;
- }
效果:
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