QStyledItemDelegate某些元素的自定义颜色

时间:2015-06-02 14:27:13

标签: c++ qt qtstylesheets

我有一个带自定义绘画的QStyledItemDelegate。每个项目包含一些文本和进度条。进度条是圆形(径向),因此也可以自定义绘制:image

此外,我的应用程序使用QSS进行一些自定义样式 此项委托用于QListView 我希望能够使用QSS将不同的ProgressBar块颜色设置为100%和非100% 的问题
有没有办法知道当前QSS的进度条块的颜色?

调查和代码我尝试过:

QSS:

QProgressBar { border: 1px solid #909090; ; }

QProgressBar[value="100"]::chunk { 
    width: 10px; 
    margin: 0.5px; 
    background-color: rgb(50,145,212);
}

QProgressBar::chunk { 
    width: 10px; 
    margin: 0.5px; 
    background-color: rgb(81,211,49);
}

C ++:

QStyleOptionProgressBarV2 pbStyleOption;
{
    boost::scoped_ptr<QProgressBar> pb(new QProgressBar());
    pb->setStyle(QApplication::style());
    pb->setStyleSheet(static_cast<QApplication*>(QApplication::instance())->styleSheet());
    pb->setValue(progressPercentage);
    pb->setMaximum(100);
    pbStyleOption.initFrom(pb);
    qDebug() << pbStyleOption.palette.brush(QPalette::Highlight);
}

我正在使用QPalette::Highlight,因为我查看了Qt的样式来源,并将此ColorRole用于PE_IndicatorProgressChunk

P.S。 上面的QSS仅适用于略微修改的QProgressBar。唯一的修改是重新实现的setValue()。这是它的代码:

void StyledProgressBar::setValue(int val)
{
    QProgressBar::setValue(val);
    style()->unpolish(this);
    style()->polish(this);
    update();
}

0 个答案:

没有答案