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

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

被折叠的 条评论
为什么被折叠?



