2016-08-16 4 views
1

QWidgetのカスタムサブクラスで背景色を変更したいと思います。 は、ここでは、コードです:パレットを使用してQWidgetの背景色を変更するQtが動作しません

WorldView::WorldView(QWidget *parent) : QWidget(parent) 
{ 
    QPalette p(palette()); 
    p.setColor(QPalette::Background, Qt::black); 
    setAutoFillBackground(true); 
    setPalette(p); 
} 

しかし、期待どおりに動作しません。背景色は変更されません。

なぜわからないのですか?

答えて

2

documentationで読めるように、QPalette::Backgroundは廃止されました。代わりにQPalette::Windowを使用してください。いくつかのウィジェットはバックグラウンドにいくつかの他の役割を使用することに注意してください。

警告:またQPalette::ColorRole documentation

を参照してください彼らはネイティブのテーマエンジンを利用する場合、いくつかのスタイルは、 例えば、すべての描画のためのパレットを使用しないでください。これは、Windows XP、Windows Vista、およびOS Xスタイルの両方について、 の場合です。

この場合、スタイルシートを使用することをおすすめします。ワールドビューは、カスタムpaintEventで、カスタムウィジェットであれば、それは私はそれがまだ `Window`に` Background`を変更しようとしましたが、している背景

+1

を描画するのはあなた次第です、しかしQt Style Sheets Reference

を参照してください。動作しません。 (文書によれば、 'Background'は' Window'と定義されています。)問題は別の場所にあるかもしれません。まだありがとう。 – crupest

+0

'autoFillBackground'をtrueに設定する必要があるかもしれません(' QWidget :: setAutoFillBackground(bool) ') – Fabio

+0

ご覧のとおり、私はすでにコードで行っています。 – crupest

0
setStyleSheet('background-color:black;') 
関連する問題