2016-04-08 31 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

私がしようとしているのは、私のボタンの中にオーバーレイサークルがあります。これは、チェックボックスを持つような、ボタンのチェックされたプロパティですが、私はそれを描画としてレンダリングします。 – Toots

答えて

1

ボタンのバックグラウンドカラーを取得する方法は、スタイルに依存するため非常に難しく、スタイルがパレットを尊重しているとは限りません。

は、しかし、私は2つの異なるアプローチを提案:

  1. をあなたはスタイルを使用するか()paintEventを再実装、あなたは(単純な)スタイルシートを使用して背景色を所有して設定したり、ボタンを自分の絵を実装することができます。 Customizing QPushButton

  2. 逆の色でボタンをペイントするには、反転カラーを取得するためにペインタにコンポジションモードを設定します。

    例えば

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

(この例を使用して、中間グレーの逆の色は(128、128、128)とまったく同じ色であることに注意)

参照QPainter::CompositionMode

関連する問題