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

 

你可能感兴趣的:(timer,UI,delete,Class,qt,Signal)