我正在运行ubuntu 11.04。这就是我的进度条的样子:更改QProgressBar的颜色
我显示在批处理窗口中的进度条(每批项目之一),并想用它们作为一个状态指示灯(绿色,而所有的进展顺利,发生错误时为红色,......)。
我已经尝试了几个建议,其中包括this几乎相同的问题。不幸的是,我无法让它工作,并且定制QProgressBars的documentation也无法帮助我,所以我会非常感谢任何关于我做错了什么的建议。
我已经按照建议子类化了QProgressBar,并尝试使用样式表以及调色板(不是在同一时间,而是作为替代方法)。对于样式表,我无法让它看起来像常规进度条。改变颜色真的是我想要做的,所以我想通过使用调色板而不是样式表来实现这一点要容易得多,但调色板根本没有任何反应。
这里是我试过的调色板的版本之一:
#include "myprogressbar.h"
#include <QtGui/QPalette>
MyProgressBar::MyProgressBar(QWidget *parent) :
QProgressBar(parent)
{}
void MyProgressBar::onProgress(int value, int maximum, QString phase)
{
setMaximum(maximum);
setValue(value);
setFormat(phase);
QPalette p = this->palette();
p.setColor(QPalette::Highlight, QColor(Qt::green));
this->setPalette(p);
}
...
我也试过版本建议here,但这并没有帮助。
文档上'palette'和'setPalette'说:*警告:不要在结合使用此功能与Qt样式表。*也许这是问题?在这种情况下,你可以尝试'style'和'setStyle'。但这只是我的猜测。 – Frg 2012-02-20 22:28:05
什么是您的操作系统?进度条如何看起来像它? – Dmitriy 2012-02-20 22:53:18
如果你使用样式表,那么你必须设置*所有*不只是一个单一的元素。向我们展示您尝试过的样式表。 – koan 2012-02-20 23:40:26