您的位置:首页 > 编程语言 > Qt开发

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

2012-05-04 23:58 274 查看
有时候有些地方我们不得不干重复的事情,怎么办。不可能来个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

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: