2013-03-07 58 views
1

我已經開始學習QT編程,我正在練習基本的信號和插槽編程,我寫了下面的代碼爲什麼QT進度條的最大值限制在99%?

#include "mainwindow.h" 
    #include "ui_mainwindow.h" 

    MainWindow::MainWindow(QWidget *parent) : 
     QMainWindow(parent), 
       ui(new Ui::MainWindow) 
     { 
     ui->setupUi(this); 
     ui->progressBar->setValue(1); 
     ui->progressBar->setRange(0,100); 
     connect(ui->horizontalSlider,SIGNAL(valueChanged(int)), 
            ui->progressBar,SLOT(setValue(int))); 
     } 

    MainWindow::~MainWindow() 
      { 
      delete ui; 
      } 

問題是,當我移動水平滑塊到最大值的進度條顯示的值最大99%不是100%。 QT中的默認值是否顯示?或者我在代碼中犯了一些錯誤?請幫忙。謝謝

+3

可能是因爲水平滑有0-99範圍? – paulm 2013-03-07 10:15:33

回答

3

如paulm的評論所提到的,docs狀態QAbstractSlider默認範圍0-99 。你永遠不會達到100使用該滑塊。

您可以通過設置您的QProgressBar的範圍內做你的MainWindow構造以下,以匹配您的滑塊的證實了這一點: (編輯爲完整的代碼)

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 

    /* naive way */ 
    //ui->progressBar->setValue(1); 
    //ui->progressBar->setRange(0,100); 

    /* "correct" way - note that I set the range FIRST */ 
    ui->progressBar->setRange(ui->horizontalSlider->minimum(), 
           ui->horizontalSlider->maximum()); 
    ui->progressBar->setValue(ui->horizontalSlider->value()); //initialize the progress bar to slider's initial value 

    connect(ui->horizontalSlider,SIGNAL(valueChanged(int)), 
      ui->progressBar,SLOT(setValue(int))); 
} 
+0

真的解決了我的問題。 +1是我值得做的感謝:-) – 2013-03-08 11:18:53

1

你應該設置滑塊的屬性對應的進度條。

我的意思是,在其中滑動套最大值進度條100%滑塊使用公setMinimumsetMaximum