2016-04-08 101 views
1

我怎樣才能得到一個QPushButton的壓制背景顏色?獲取QPushButton按下背景顏色

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

在此先感謝!

+1

歡迎來到Stackoverflow。你能解釋你想做什麼嗎?看起來,獲得這種顏色不是一個好主意。可能是我們可以找到你最初的問題的更好的解決方案? – Ilya

+0

我有一個QPushButton子類,當按鈕被長按,我想提請與背景的反色的圓圈,然後裏面是用背景色的檢查符號。對我來說,另一個選擇是清除圈子的某些部分(使該部分透明)以創建複選標記。 – Toots

+0

我想要做的是在我的按鈕中有一個覆蓋圓圈,並在中間形成一個整形檢查。它用於按鈕的checked屬性,就像有一個複選框,但我想將其渲染爲繪圖。 – Toots

回答

1

這是非常困難的(如果不是不可能)找到一種方式來獲得一個按鈕的backgound顏色時,它的壓制,因爲它取決於風格,它不能保證風格尊重調色板。

不過我建議兩種不同的方法:

  1. 您可以使用樣式或重新實現的paintEvent()設置你使用樣式表(簡單)自己的背景顏色或實現自己按鈕的畫。請參見Customizing QPushButton

  2. 要用相反顏色在按鈕上繪畫,可以爲畫家設置合成模式以獲得反色。

例如:

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

(請注意,使用本例中,中間灰度(128,128的逆顏色,128)是完全一樣的色)

參見QPainter::CompositionMode