在看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()函數的含義,大家看懂了沒呀,各位一起加油吶!