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

Qt编程7:Qt定时器 QTimer使用

2014-06-17 15:39 1331 查看
1、QTimer类提供了定时器信号和单触发定时器。
QTimer很容易使用:创建一个QTimer,使用start(),并把timeout()连接到槽函数。

当这段时间过去了,它将会发射timeout()信号。

2、使用静态的函数来创建单触发定时器。

作为一个特殊情况,一旦窗口系统事件队列中的所有事件都已经被处理完,一个定时为0的QTimer就会到时间了。

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTime>

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
bIsClick(false),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
timer = new QTimer;                                //构建QTimer对象
codec = QTextCodec::codecForLocale();              //设置字符集

//第一种方式
connect(timer,SIGNAL(timeout()),SLOT(S_showMsg()));//使用start()与timeout()组合实时更新当前时间
//第二种方式
QTimer::singleShot(5000,this,SLOT(S_displayTime()));//只执行一次,间隔5秒

QTimer::singleShot(10000,this,SLOT(close()));       //10秒过后关闭窗口
}

MainWindow::~MainWindow()
{
delete ui;
delete timer;
}

void MainWindow::S_showMsg()
{
static int num;
ui->timeLabel->setText(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss zzz"));
if(++num == 5)
timer->setInterval(1);                         //重置定时器时间间隔,在此过程重新调用了start()
}

void MainWindow::S_displayTime()
{
ui->timeLabel2->setText(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss zzz"));
}

void MainWindow::on_pushButton_clicked()
{
bIsClick = !bIsClick;
if(bIsClick)
{
ui->pushButton->setText(codec->toUnicode("停止"));
timer->start(1000);                               //间隔1秒执行一次

if(timer->isActive())                             //判断定时器停止
ui->statusLabel->setText(tr("<span style = color:red>%1</span>").arg(codec->toUnicode("定时器正在运行...")));
}
else
{
ui->pushButton->setText(codec->toUnicode("开始"));
timer->stop();
if(!timer->isActive())
ui->statusLabel->setText(tr("<span style = color:green>%1</span>").arg(codec->toUnicode("定时器停止运行")));
}
}


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