我不知道如何在进度条的值接近50%时部分更改文本颜色。这个效果在融合风格的进度条中会自动生成(如下图所示)。有人知道这是如何实现的吗?
我不知道如何在进度条的值接近50%时部分更改文本颜色。这个效果在融合风格的进度条中会自动生成(如下图所示)。有人知道这是如何实现的吗?
我不知道如何制作这样的两种颜色的文本,所以我查看了:
QRegion rightRect = rect;
rightRect = rightRect.subtracted(leftRect);
painter->setClipRegion(rightRect);
painter->setPen(flip ? alternateTextColor : textColor);
painter->drawText(rect,
bar->text,
QTextOption(Qt::AlignAbsolute|
Qt::AlignHCenter|
Qt::AlignVCenter));
if (!leftRect.isNull())
{
painter->setPen(flip ? textColor : alternateTextColor);
painter->setClipRect(leftRect);
painter->drawText(rect,
bar->text,
QTextOption(Qt::AlignAbsolute|
Qt::AlignHCenter|
Qt::AlignVCenter));
}
在我看来,实现这一点最好且可能最简单的方法是更改QProgressBar小部件的调色板:
QPalette palette = progressBar->palette()
palette.setColor(QPalette::Text, textColor)
palette.setColor(QPalette::HighlightedText, textColor)
progressBar->setPalette(palette)
"setBackgroundRole"方法允许您使用背景色角色,这意味着使用小部件应用的样式的预定义颜色之一。因此,您基本上受限于样式及其颜色。"
背景解决方案:
value = 65
self.progressBar.setProperty("value", value)
if value < 50:
self.progressBar.setStyleSheet("QProgressBar::chunk { background-color: black; }")
else:
self.progressBar.setStyleSheet("QProgressBar::chunk { background-color: black; } QProgressBar { color: white; }")
myMainWidget.setStyleSheet(QString("QProgressBar {color: red}"));