Qt中progressbar进度的颜色和背景色怎么设置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt中progressbar进度的颜色和背景色怎么设置相关的知识,希望对你有一定的参考价值。

Qt中progressbar进度的颜色可以再stylesheet中设置,可是背景颜色(除了进度,进度条中剩余的部分)怎么设置呢?

QProgressBar 
   border: 2px solid grey;
   border-radius: 5px;
   background-color: #FFFFFF;


QProgressBar::chunk 
   background-color: #05B8CC;
   width: 20px;


QProgressBar 
   border: 2px solid grey;
   border-radius: 5px;
   text-align: center;

参考技术A 背景色用background-color
再加上border-color
就行了本回答被提问者采纳

如何更改 Qt ProgressBar 颜色?

【中文标题】如何更改 Qt ProgressBar 颜色?【英文标题】:How to change Qt ProgressBar color? 【发布时间】:2018-10-24 10:48:20 【问题描述】:

我想将进度条的颜色从默认的绿色更改为红色。我有这段代码,但视图是“平面”的,我想实现如下图所示的“3d 效果”:

红色 PB 代码:

QPalette pal = ui->pbExtractionWidget->palette();
pal.setColor(QPalette::Normal, QColor(Qt::red));
QString danger = "QProgressBar::chunk background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0,stop: 0 #FF0350,stop: 0.4999 #FF0020,stop: 0.5 #FF0019,stop: 1 #FF0000 );border-bottom-right-radius: 5px;border-bottom-left-radius: 5px;border: .px solid black;";
 ui->pbExtractionWidget->setStyleSheet(danger);

看起来是这样的:

【问题讨论】:

这有帮助吗? ***.com/questions/22712343/… 很遗憾没有 【参考方案1】:

This link provides a way to style the progressbar.

This link provides a way to change gradient color for widgets.

本质上,您只需要正确更改样式表。每个 Chunk 都是进度条的一部分。

或使用QPalette,它使用Base 为小部件的背景着色。正确设置其gradient,然后执行以下操作。

palette.setBrush( QPalette::Base, gradientVariable);
ui->pbExtractionWidget->setPalette(palette);

【讨论】:

【参考方案2】:
// In main.cpp
qDebug() << QStyleFactory::keys();
// If keys contains e.g. 'Fusion' it would be possible to change color of QProgressBar.
// On windows default style is 'Windows' and color can only be change with style sheets.
auto style = QStyleFactory::create("Fusion");
if (style) 
  app.setStyle(style);


class MyProgressBar final : public QProgressBar 
  void paintEvent(QPaintEvent*) final 
    QStyleOptionProgressBar option;
    initStyleOption(&option);
    option.textAlignment = Qt::AlignHCenter;
    option.palette.setColor(QPalette::Highlight, QColor("lightskyblue"));
    option.palette.setColor(QPalette::HighlightedText, option.palette.color(QPalette::Text));
    QPainter painterthis;
    style()->drawControl(QStyle::CE_ProgressBar, &option, &painter, this);
  
;

【讨论】:

【参考方案3】:

你必须正确设置样式表,使用下面的样式表代码

QString danger = "QProgressBar::chunk: horizontal border-radius: 3px; background: QLinearGradient(X1:0, y1:0.966136, x2:0, y2:0, stop:0.609721 rgba(242, 53, 53, 255), stop:0.691923 rgba(240, 151, 141, 252));border: .px solid black;";

ui->progressBar->setStyleSheet(danger);

【讨论】:

以上是关于Qt中progressbar进度的颜色和背景色怎么设置的主要内容,如果未能解决你的问题,请参考以下文章

qt 怎么 设置widget的背景色

C#中怎样改变进度条(progressbar)的颜色?

(VB6)窗体菜单项怎么自定义背景色和字体颜色(含子菜单)

关于Android怎么改变ProgressBar进度条颜色

27.QT-QProgressBar动态实现多彩进度条(详解)

关于Android怎么改变ProgressBar进度条颜色