在看Qt内部自带的示例的时候,看到了这样的一条有趣的随机数生成函数,和普通的随机数生成的函数不同,这个函数看起来就相当的复杂,只不过,在它复杂的表象下,它的内在功能仅仅只是生成一个随机数,现在,我们就来看看这个功能函数。
ColorItem::ColorItem() : color(QRandomGenerator::global()->bounded(256), QRandomGenerator::global()->bounded(256), QRandomGenerator::global()->bounded(256)) { setToolTip(QString("QColor(%1, %2, %3)\n%4") .arg(color.red()).arg(color.green()).arg(color.blue()) .arg("Click and drag this color onto the robot!")); setCursor(Qt::OpenHandCursor); setAcceptedMouseButtons(Qt::LeftButton); }
这是一个自定义的colorItem类的构造函数,我们这次涉及到的函数功能在这个构造函数的后面,用冒号隔开,对color这个成员变量进行初始化操作,赋予color初值,这里颜色的初值就要靠我们这里要讲的QRandomGenerator::global()->bounded()函数来实现。
QRandomGenerator这是一个随机数生成器类,可以生成一系列的随机数值,而QRandomGenerator::global()这个得连起来看,这是一个指针变量,返回创建的随机数据指针,但得实现生成随机数这个功能,这里的命令得变成QRandomGenerator::global()->generate()这个样子,前面的那个主体只是一个指针,需要加上generate()这个命令,才能生成随机数。
QRandomGenerator::global()->bounded()这个函数,和上面的函数的不同点在于,bounded()这个函数括号里面,给定了生成随机数的范围,必须在这个范围内生成随机数,这里的程序,就是在0~256之间生成一个随机的整数。而颜色的生成,只需要生成三个数字,就可以利用三原色,实现对一个颜色的定义,这里就是借用这个功能,对颜色进行初始化。
以上,就是QRandomGenerator::global()->bounded()函数的含义,大家看懂了没呀,各位一起加油呐!