gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 02:00:19 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com