当它的值接近50%时,我不知道如何在进度条中部分更改文本的颜色。此效果自动出现在融合样式进度条中(下图)。有谁知道这是怎么做的?
懒得编写工作示例代码,更不用说制作截图了。甚至没有50个代表。 :-)
然而,问题有点令人感兴趣。我不知道如何才能完成这两个彩色文本。所以我查了一下:http://qt.gitorious.org/qt/qtbase/blobs/stable/src/widgets/styles/qfusionstyle.cpp Line 1450ff(http://qt.gitorious.org/qt/qtbase/blobs/stable/src/widgets/styles/qfusionstyle.cpp#line1450)。
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)
您可以在Container Widget上使用样式表:
myMainWidget.setStyleSheet(QString("QProgressBar {color: red}"));