2011-09-16 40 views
0

私はQComboBoxを継承するクラスを持っています。私はこのウィジェットの赤い枠線を設定する必要があります。
私はQPaletteを使用することはできません、私はsetStyleSheetを使用しようとしています:
pComboBox->setStyleSheet("QFrame { border: 2px solid red; }")
それはにQLineEditの罰金に動作しますが、QComboBoxのために、私は、ポップアップ表示ではなく、コンボボックスの周りに赤い境界線を得ました。
QComboBoxのフレームにアクセスするにはどうすればよいですか?QComboBoxは境界線の色を変更できません

答えて

0

私がこの問題を解決するために見つけた最も簡単な方法は、私が使用するウィジェットをサブクラス化し、paintEvent()に赤い四角形を描くことです。

0

セレクタを使用する必要があります。QFrameではなく、2つのスタイリッシュなセレクタを使用する必要があります。

pComboBox->setStyleSheet("QComboBox { border: 2px solid red; } QFrame { border: 2px solid blue; }") 

このウィジェットのスタイリングの詳細については、StyleSheet examplesを参照してください。

+0

QComboBoxでは動作しますが、このスタイルの設定では、QComboBoxはXPではなくWin95のコンボボックスのように見えます。それは私が使用するウィジェット(QComboBoxを継承します)ではまったく動作しません。 setStyleSheetで私のウィジェットのクラス名を使用しても( – Funt

+0

)私が見つけたすべての方法を試しましたが、今度はSomeComboBoxにQFrameをもう1つ追加して、赤い枠線を作るのに使うのがよいかどうかは不思議です... – Funt

+0

コンボボックスをスタイライズするとすぐに、QtはネイティブOSバージョンを使用できなくなります(そして、あなたはそれをスタイル設定することによってネイティブの外観を破ることになります)。したがって、コンボボックスのスタイルを混乱させるつもりなら、多くのウィジェット。 – Chris

関連する問題