c++ - 为什么QT进度条最大值被限制在99%?

标签 c++ qt4

我已经开始学习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;
          }

问题是当我将水平 slider 移动到最大值时,进度条显示 99% 最大值。不是 100%。 QT中显示的是默认值吗?还是我在代码中犯了一些错误?请帮忙。谢谢

最佳答案

如 paulm 评论中所述,docs声明 QAbstractSlider 默认为 0-99 的范围。使用该 slider 您永远不会达到 100。

您可以通过在 MainWindow 构造函数中执行以下操作,将 QProgressBar 的范围设置为与 slider 的范围相匹配来确认这一点: (编辑完整代码)

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

关于c++ - 为什么QT进度条最大值被限制在99%?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15268318/

相关文章:

c++ - 使用线程编程

qt - 无法在悬停样式表上获得带有边框的平面 QToolButton

memory-leaks - QT QListWidget.addItem(..) - 当项目被释放或 QT 处理它时

c++ - 如何限制构造生命周期更长的对象所需的变量范围?

c++ - 捕捉 QTableWidgetItem 检查状态变化

c++ - 如何使 Qt 子部件高度相等?

c++ - 如何使用另一个版本的库

c++ - 模板运算符似乎因歧义而失败

c++ - C开头的类名

c++ - 每个 live555 元素的 undefined reference