是否可以在OS X上重新设置QProgressBar的样式?

时间:2011-12-16 18:15:32

标签: c++ macos qt qstyle

使用QStyle子类并设置调色板的方法不起作用(但对MyStyle的其他基本样式有效。)

void MyStyle::drawControl(ControlElement control, const QStyleOption *option,
                          QPainter *painter, const QWidget *widget) const
{    
    switch(control) 
    {
        case CE_ProgressBar: 
        {
            const QStyleOptionProgressBarV2 * pOpts =
            static_cast<const QStyleOptionProgressBarV2 *>(option);
            QStyleOptionProgressBarV2 oOpts(*pOpts);

            QColor progressColor(QColor::fromHsl(50, 160, 162));
            oOpts.palette.setColor(QPalette::Highlight, progressColor);

            // BASESTYLE is QMacStyle
            BASESTYLE::drawControl(control, &outputOptions, painter, widget);
        }
            break;

        default:
            BASESTYLE::drawControl(control, option, painter, widget);
    }
}

在OS X下是否还有其他方法可以控制小部件的外观? (或者这完全不可能?)

1 个答案:

答案 0 :(得分:0)

当然,您可以使用QSS,请参阅QProgressBar example