QT用qsrand(time(0))产生随机数时出现"time" was not declared in this scope

 

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

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

#include "mainwindow.h"

#include "ui_mainwindow.h"

#include <QtCore>

#include "time.h"

 

MainWindow::MainWindow(QWidget *parent) :

QMainWindow(parent),

ui(new Ui::MainWindow)

{

 

ui->setupUi(this);

qsrand(time(0)); //每次启动程序产生不同的初始值

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

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

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

 

}

 

 

MainWindow::~MainWindow()

{

delete ui;

}

 

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; //退出系统

}

}

 

 

 

但是我们会发现程序编译时出错了。

QT用qsrand(time(0))产生随机数时出现'time' <wbr>was <wbr>not <wbr>declared <wbr>in <wbr>this <wbr>scope

根据经验,没有定义,我们第一时间反应是头文件的问题,我们发现刚刚定义的头文件没有出错,那就是才定义的包括time的头文件。查找资料,它的头文件是#include "time.h",于是我们把这个头文件加上去,编译时就不会出错了。此时就不会按同一种顺序产生随机数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值