1

我已经开始学习 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%。不是100%。QT中显示的默认值吗?还是我在代码中犯了一些错误?请帮忙。谢谢

4

2 回答 2

3

正如 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)));
}
于 2013-03-07T17:24:11.077 回答
1

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

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

于 2013-03-07T10:16:19.733 回答