1

如何获得 QPushButton 的按下背景颜色?

if (isDown())
    _BGColor = <pressed background color>; // how to get this???
else
    _BGColor = palette().color(QPalette::Background); // this is to get the idle backcolor

提前致谢!!!

4

1 回答 1

1

很难(如果不是不可能的话)找到一种方法来获取按下按钮时的背景颜色,因为它取决于样式,并且不能保证样式尊重调色板。

但是我建议两种不同的方法:

  1. 您可以使用样式表(更简单)设置​​自己的背景颜色,或者自己实现按钮的绘制,使用样式或重新实现paintEvent()。请参阅自定义 QPushButton

  2. 要使用反色在按钮上绘画,您可以为画家设置合成模式以获得反色。

例如:

painter.setPen(QColor(255, 255, 255));
painter.setCompositionMode(QPainter::RasterOp_SourceAndNotDestination);

(注意使用这个例子,中间灰色(128,128,128)的反色是完全一样的颜色)

QPainter::CompositionMode

于 2016-04-08T08:47:54.993 回答