加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2012-03-26 22:04:31)
标签:

杂谈

分类: linux_question

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



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

http://s15/bmiddle/740ccd04gbc25f8b2a5ee&690was not declared in this scope" TITLE="QT用qsrand(time(0))产生随机数时出现"time" was not declared in this scope" />

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

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有