首页 > 解决方案 > 向进度条添加负值

问题描述

我有一个来自传感器的实时值:

 ui->progressBar_retraction->setValue(aX*100); //aX is realtime value that can take positive or negative values over time

在上面的表达式中,进度条显示 的瞬时正值aX

如何以不同的方式显示负值progress bar

标签: qt

解决方案


◘ 好吧,如果你想使用另一个 QProgressBar,你显然需要另一个。然后只需检查符号aX并相应地更新两者之一:

if(aX < 0){

     progress_bar_neg->setValue(qAbs(aX)*100);
     progress_bar_pos->setValue(0);

}else{

     progress_bar_pos->setValue(aX*100);
     progress_bar_neg->setValue(0);

}

请注意,如果您希望其中一个QProgressbar从右到左填充,您可以使用void setInvertedAppearance(bool invert)将其设置invertedAppearancetrue

使用相同的另一种替代方法QProgressBar可能如下所示:

 ui->progressBar_retraction->setValue(qAbs(aX)*100);
 if(aX < 0){/*Set to a colour*/}
 else{/*Set to another colour*}

要编辑颜色:

QPalette p;
p.setColor(QPalette::Highlight, Qt::red); //Change background colour, here red
ui->progressBar_retraction->setPalette(p);
p.setColor(QPalette::HighlightedText , Qt::black); //Change text colour, here black
ui->progressBar_retraction->setPalette(p);

如果您想要一个双向 QProgessBar,不幸的是,据我所知仅调用一个方法是不可能的(如果我错了,请纠正我)。

我所做的是覆盖void QProgressBar::paintEvent(QPaintEvent *)从中间开始绘制矩形。然后,您只需修复QProgressBarwith的范围void QProgressBar::setRange(int minimum, int maximum)。您甚至可以更新颜色以使其更易于查看。


推荐阅读