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