qt - 向进度条添加负值
问题描述
我有一个来自传感器的实时值:
ui->progressBar_retraction->setValue(aX*100); //aX is realtime value that can take positive or negative values over time
在上面的表达式中,进度条显示 的瞬时正值。aX
如何以不同的方式显示负值progress bar
?
解决方案
◘ 好吧,如果你想使用另一个 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)
将其设置invertedAppearance
为true
。
◘使用相同的另一种替代方法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 *)
从中间开始绘制矩形。然后,您只需修复QProgressBar
with的范围void QProgressBar::setRange(int minimum, int maximum)
。您甚至可以更新颜色以使其更易于查看。
推荐阅读
- r - 将样本信息作为新列添加到数据集的有效方法
- php - mysqli_real_escape_string 添加的 PHP 转义单引号
- javascript - 如何过滤对象数组并根据特定属性变得不同
- duplicates - 从 Firebase 数据库中回收视图重复项
- try-catch - KeyError 时间戳
- javascript - 在 Cropper.js 中销毁()后保存图像
- excel - 如何在非英文 Excel 版本中使用切片器链接表格和数据透视表?
- awk - 用变量的内容替换文件的行
- apache-spark - 登录失败:对于主体:jztwk javax.security.auth.login.LoginException:无法从用户获取密码
- apache-kafka - 我想使用 kafka-connect 从多个主题将数据加载到多个表中