为什么QT进度条的最大值限制在99%

why QT progressbar maximum value is limited to 99%?

本文关键字:最大值 QT 为什么      更新时间:2023-10-16

我已经开始学习QT编程,我正在练习基本的信号和插槽编程,我写了以下代码

    #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% max的值。不是100%。是否在QT中显示默认值?还是我在代码中犯了什么错误?请帮助。由于

正如paulm的评论中提到的,文档声明QAbstractSlider的默认范围为0-99。使用这个滑块,你永远也达不到100。

你可以通过在你的MainWindow构造函数中设置QProgressBar的范围来匹配你的滑块来确认这一点:(编辑完整代码)

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)));
}

你应该设置与进度条相对应的滑块属性。

我的意思是,在滑块中使用setMinimumsetMaximum,滑块的最大值将进度条设置为100%