在 Slider 使用 float 數值
前言
在前一篇 Slider 的基本應用 裡說明了 Slider 的基本應用,但 Slider 的數值是用 Integer (整數),作為數值來儲存,如果需要用到 float 或 double 這種帶有小數的數值該如何解決呢?內容
先到 [ GitLab ] HelloQt 下載範例,這次應用的專案路徑(HelloQt' directory)/Slider/FloatValue,範例執行的結果如下
範例的執行結果 |
左側的 Slider 是以 float 為數值,範圍在 0 ~ 10 ,右側的 Slider 是以 double 為數值,範圍在 -10 ~ 10,接著看程式的部分,看到 MainWindow::MainWindow() ,程式碼如下
// float value1 = 5.0f; ui->horizontalSlider->setValue( value1 * 10.0f ); ui->label1->setText( QString::number( 0.1f * ui->horizontalSlider->value() ) ); // double value2 = 0.0f; ui->verticalSlider->setValue( value2 * 100.0 ); ui->label2->setText( QString::number( 0.01 * ui->verticalSlider->value() ) ); // connect( ui->horizontalSlider , &QSlider::valueChanged , this , &MainWindow::onHorizontalSliderValueChanged ); connect( ui->verticalSlider , &QSlider::valueChanged , this , &MainWindow::onVerticalSliderValueChanged );
在開頭的 value1 是一個 float 的數值,當要把 float 的數值設定到 Slider 的時候先乘上 10.0f ,接著同步的 Label 是將 Slider 的數值乘上 0.1f ,如果在設計介面看到該 Slider 的值域會是 0 ~ 100 ,如下圖
左側 Slider 的值域 |
利用乘上 10.0f 來把值域從 0 ~ 10 變成 0 ~ 100 ,在取 Slider 的數值的時候,要在將值域 0 ~ 100 變成 0 ~ 10 ,所以要乘上 0.1f , double 的用法也可以這樣用,要注意的是這個方法會有精度的問題,左側的 Slider 無法拉出像是 5.57 這樣的數值,因為精度只到 0.1,右側的 Slider 的精度則是 0.01 。
參考資料
[ doc.qt.io ] QSlider Class相關文章與資料
[ GitLab ] HelloQtSlider 的基本應用
沒有留言:
張貼留言