我想更改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
函数的各种组合。我在这里发布了我编辑的各种设置。没有一种组合有效