Important: Please read the Qt Code of Conduct -

QwtPlot: how to set the canvas background colour to a semi-transparent?

  • Hi,

    I have a QwtPlot object and I want and need to change its canvas background colour. To that end, I do something like:

    QBrush brush = canvasBackground();

    This works fine with opaque colours, but if I have a semi-transparent colour (e.g. #3a108080), then the effective colour becomes that of its corresponding opaque colour (i.e. #108080). Yet, if I query the canvas background colour, I correctly get #3a108080...!?

    So, what am I doing wrong here?...

    FWIW, I have managed to get things to work as I want by replacing the above code with:

    setStyleSheet(QString("QwtPlotCanvas {"
                          "    background: %1;"

    Now, although it works fine, I must confess that I would rather avoid having to use style sheets. So, any idea how I achieve the same result using something like my original code?

    Cheers, Alan.

  • Actually, to use style sheets is not right for what I want since I want the semi-transparent colour to be on a white background, while my QwtPlot object has a grey background...

    This means that, in the end, I am doing the following:

    static const QColor White = Qt::white;
    QBrush brush = canvasBackground();
    double ratio = myColor.alpha()/256.0;

    I guess I am happy with that...

Log in to reply