如何更改QToolButton的背景颜色?

时间:2019-07-15 19:16:24

标签: c++ qt user-interface button

我想更改QToolButton的背景颜色。我希望按钮的形状与边框保持一致。仅背景需要改变。我已经尝试过使用样式表,但是我得到的只是左右两侧的一小部分颜色发生了变化。

我一直在尝试使用以下代码段:

class ColorButton : public QToolButton
{
    Q_OBJECT
public:
    explicit ColorButton(QWidget *parent = nullptr) : QToolButton(parent) {}
protected:
    virtual void paintEvent(QPaintEvent *) override
    {
        QStylePainter p(this);
        QStyleOptionToolButton opt;
        initStyleOption(&opt);
        p.drawComplexControl(QStyle::CC_ToolButton,   opt);
        p.setBrush(QColor(255,0,0,100));
        p.setPen(Qt::NoPen);
        p.drawRect(4,4,width()-8,height()-8);
    }
};

但是,我所得到的只是在文本上方绘制的红色红色矩形。这通常可以正常工作,但是文本现在变成了红色。

基本上,我所需要做的就是能够更改背景颜色。如果使用提供的代码段,则需要弄清楚如何强制将文本绘制为前景。

或者,如果有更好的方法,请告诉我!

谢谢。

编辑:

我正在最新版本的Linux Mint上运行Qt 5.9(截至撰写本文时)

编辑2:

我还应该注意,我尝试使用QPalette更改颜色。这没有用。示例代码发布:

    p_deactiveColor.setBrush(QPalette::Base, QColor(Qt::red));
    p_deactiveColor.setBrush(QPalette::Button, QColor(Qt::red));
    p_deactiveColor.setBrush(QPalette::Window, QColor(Qt::red));
    p_deactiveColor.setBrush(QPalette::WindowText, QColor(Qt::red));

    p_activeColor.setBrush(QPalette::Base, QColor(Qt::green));
    p_activeColor.setBrush(QPalette::Button, QColor(Qt::green));

    ui->cupExtendButton->setPalette(p_deactiveColor);

请注意,我尝试了p_deactiveColor.setBrush函数的各种组合。我在这里发布了我编辑的各种设置。没有一种组合有效

0 个答案:

没有答案