我想生成0到1之间的随机数.qt间期为1秒

  • 本文关键字:qt 随机数 1秒 之间 c++ qt delay wait
  • 更新时间 :
  • 英文 :


我想生成从0到1的随机值,间隔一秒。我已经写了这个代码,但我不明白如何才能延迟1秒。

主窗口.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QRandomGenerator>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setStyleSheet("background-color: black;");
ui->random_label->setAlignment(Qt::AlignCenter);
ui->random_label->setStyleSheet("color: rgb(255, 255, 255);");

while(true)
{
double value = QRandomGenerator::global()->generateDouble();
qDebug()<<QString::number(value,'f',2);
//i need delay here of 1 second
}
}
MainWindow::~MainWindow()
{
delete ui;
}

我需要在循环中的这行qDebug()<<QString::number(value,'f',2);之后1秒的deley,并且我还在需要1秒延迟的地方写注释。请帮帮我,我是Qt的新手。我怎么能延迟1秒?

您的while(true)将在构造函数中阻塞。

相反,使用QTimer,将其间隔设置为1秒,并将其超时信号连接到MainWindow类中的插槽。在该插槽中,运行当前位于while主体中的代码。

这使得";更新随机数";从构造函数进入由应用程序完成的事件处理。

您可以创建一个计时器,并使用以下示例连接随机生成器:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "qtimer.h"
#include "QRandomGenerator"
#include "QDebug"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//Initialize timer
QTimer *_timer = new QTimer(this);
double value;
//connect timer to random generator using lambda expression
connect(_timer,&QTimer::timeout,[&](){
value = QRandomGenerator::global()->generateDouble();
qDebug()<<QString::number(value,'f',2);
});
//emit timeout after every 1 sec.
_timer->start(1000);
}
MainWindow::~MainWindow()
{
delete ui;
}

注意generateDouble()在正则范围[0,1((即包括0且不包括1(内生成一个随机qreal。

最新更新