Qt之QTimer----每秒都有自己要干的事
Qt之QTimer----每秒都有自己要干的事
有时候有些地方我们不得不干重复的事情,怎么办。不可能来个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
评论暂时关闭