织梦CMS - 轻松建站从此开始!

罗索实验室

当前位置: 主页 > 基础技术 > C/CPP专题 >

qt中定时器Timer的使用

jackyhwei 发布于 2011-03-20 15:55 点击:次 
有两种方法实现定时器。第一种。自己建立关联。第二种。使用事件。(有点像单片机中的定时器啊)
TAG:

有两种方法实现定时器。

第一种。自己建立关联。

1.新建Gui工程,工程名可以设置为timer。并在主界面上添加一个标签label,并设置其显示内容为“0000-00-00 00:00:00 星期日”。

2.在mainwindow.h中添加槽函数声明。

private slots:

void timerUpDate();

3.在mainwindow.cpp中添加代码。

添加#include <QtCore>的头文件包含,这样就包含了QtCore下的所有文件。

构造函数里添加代码:

QTimer *timer = new QTimer(this);

//新建定时器

connect(timer,SIGNAL(timeout()),this,SLOT(timerUpDate()));

//关联定时器计满信号和相应的槽函数

timer->start(1000);

//定时器开始计时,其中1000表示1000ms即1秒

4.然后实现更新函数。

void MainWindow::timerUpDate()

{

QDateTime time = QDateTime::currentDateTime();

//获取系统现在的时间

QString str = time.toString("yyyy-MM-dd hh:mm:ss dddd");

//设置系统时间显示格式

ui->label->setText(str);

//在标签上显示时间

}

5.运行程序,效果如下。

第二种。使用事件。(有点像单片机中的定时器啊)

1.新建工程。在窗口上添加两个标签。

2.在main.cpp中添加代码,实现中文显示。

#include <QTextCodec>

QTextCodec::setCodecForTr(QTextCodec::codecForLocale());

3.在mainwindow.h中添加代码。

void timerEvent(QTimerEvent *);

4.在mainwindow.cpp中添加代码。

添加头文件#include <QtCore>

在构造函数里添加以下代码。

startTimer(1000); //其返回值为1,即其timerId为1

startTimer(5000);//其返回值为2,即其timerId为2

startTimer(10000); //其返回值为3,即其timerId为3

添加了三个定时器,它们的timerId分别为1,2,3。注意,第几个定时器的返回值就为几。所以要注意定时器顺序。

在下面添加函数实现。

void MainWindow::timerEvent(QTimerEvent *t) //定时器事件

{

switch(t->timerId()) //判断定时器的句柄

{

case 1 : ui->label->setText(tr("每秒产生一个随机数:%1").arg(qrand()%10));break;

case 2 : ui->label_2->setText(tr("5秒后软件将关闭"));break;

case 3 : qApp->quit();break; //退出系统

}

}

 

这里添加了三个定时器,并都在定时器事件中判断它们,然后执行相应的功能。这样就不用每个定时器都写一个关联函数和槽函数了。

 

 

随机数的实现:

上面程序中的qrand(),可以产生随机数,qrand()%10可以产生0-9之间的随机数。要想产生100以内的随机数就%100。以此类推。

但这样每次启动程序后,都按同一种顺序产生随机数。为了实现每次启动程序产生不同的初始值。我们可以使用qsrand(time(0));实现设置随机数的初值,而程序每次启动时time(0)返回的值都不同,这样就实现了产生不同初始值的功能。

我们将qsrand(time(0));一句加入构造函数里。

(buptyoyo)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www1.rosoo.net/a/201103/11096.html]
本文出处:百度博客 作者:buptyoyo
顶一下
(3)
23.1%
踩一下
(10)
76.9%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容