Qt之‘qsrand’未找到,原因以及解决方案

在升级到QT6.1.2版本后,由于API变动,旧代码中使用的qsrand函数无法找到。文章详细记录了问题出现的背景,包括系统环境和QT版本。作者尝试了包含旧头文件、重启QT、新建项目等解决方式,但未果。最终通过查阅QT最新帮助文档,了解到qsrand已被移除。提出了在QT5.10之前的版本中qsrand的传统使用方法,以及在新版本中的可替代解决方案。

1、问题背景

在最新版本中,有一些函数或者方法已经更改,所以在老版本可以运行的程序代码,在新版本中可能就会产生问题。最近在测试QTcustomplot实时绘制曲线功能时,需要使用随机数字,在网站上找了一段代码,测试后出现以下问题:
在这里插入图片描述

说明:
系统:windows10 X86
QT版本:6.1.2

2、尝试

  • 包含头文件QtGlobal <<之前的版本qrand(), qsrand()的头文件>>
  • 重启QT,删除构造文件重新构造
  • 创建新项目,单独测试这两个函数

3、出现问题原因

  • 查阅最新版QT帮助文档,发现头文件中QtGlobal已经找不到qrand(), qsrand()函数

4、解决方案

传统使用方法:(QT5.10版本之前)

//利用qrand和qsrand生成随机数
//位于QtGlobal中
//例,生成一个0和10之间的随机数
qsrand(QTime::currentTime().msec());	//设置种子,该种子作为qrand生成随机数的起始值,RAND_MAX为32767,即随机数在种子值到32767之间
qrand()%10;

最新可替代方法:

//利用QRandomGenerator类
// Qt5.10之后新增该类
qDebug()<<QRandomGenerator::global()->bounded(10);		//生成一个0和10之间的整数
qDebug()<<QRandomGenerator::global()->bounded(10.123);	//生成一个0和10.123之间的浮点数
qDebug()<<QRandomGenerator::global()->bounded(10, 15);	//生成一个10和15之间的整数

尝试方法

// 将q去掉,这种方法也可以,构建不报错,但是不知道和之前老版本有什么区别
srand(QTime(0, 0, 0).secsTo(QTime::currentTime()));
rand() % 50;
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值