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",於是我們把這個頭文件加上去,編譯時就不會出錯了。此時就不會按同一種順序產生隨機數。

發佈了7 篇原創文章 · 獲贊 11 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章