根据比例更改QProgressbar块的颜色

时间:2019-10-23 07:29:45

标签: c++ qt chunks qprogressbar

我试图根据一个名为precision的变量来更改Qprogressbar的颜色,该变量的值介于0到100之间。因此,基本上,如果精度为100,则颜色应为绿色,如果精度为0,则应变为红色,我也希望它支持之间的值和颜色。我已经写下了以下代码,但它不会影响进度条的块颜色。我的代码的哪一部分是错误的? 我感谢任何提示和帮助:)

int G = static_cast<int> (2.5 * accuracy);
int R = 255 - G;
for (G=0, R=0; G<255 && R<255; G++, R++)
{
    ui->progressBar->setStyleSheet("QProgressBar::chunk {background-color: rgb(R, G, 0);}");
}

2 个答案:

答案 0 :(得分:1)

"QProgressBar::chunk {background-color: rgb(R, G, 0);}":此字符串中的RG不访问变量R和G;

问答,未经测试:

QString("QProgressBar::chunk {background-color: rgb(") + QString::number(R) + ", " + QString::number(G) + ", 0);}"

答案 1 :(得分:0)

正如user1810087回答的那样,这是我使用的最终代码,以防其他人想要做同样的事情:)

void MainWindow:: on_progressBar_valueChanged(int value)
{

G = static_cast<int>( 2.55 * value );
R = 255 - G;

QString Style = QString("QProgressBar::chunk {background-color: rgb(" +QString::number(R) + ", " + QString::number(G) + ", 0);}");

ui->progressBar->setStyleSheet(Style);

}