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

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

2014-12-02 16:14 405 查看





我们在用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; //退出系统
}
}




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





根据经验,没有定义,我们第一时间反应是头文件的问题,我们发现刚刚定义的头文件没有出错,那就是才定义的包括time的头文件。查找资料,它的头文件是#include "time.h",于是我们把这个头文件加上去,编译时就不会出错了。此时就不会按同一种顺序产生随机数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: