web-dev-qa-db-ja.com

QWidgetの背景色を設定する方法は?

以下のコードのw.setBackgroundRole(QPalette.Base)行は効果がありません。どうして?どうすれば修正できますか?

import sys
from PySide.QtCore import *
from PySide.QtGui import *

app = QApplication(sys.argv)
w = QWidget()
w.setBackgroundRole(QPalette.Base)
w.show()
app.exec_()
16
Johan Råde

ウィジェットでsetAutoFillBackground(True)を呼び出す必要があります。デフォルトでは、QWidgetは背景を塗りつぶしません。

詳細については、 setAutoFillBackground プロパティのドキュメントを参照してください。

任意の背景色を使用する場合は、代わりにウィジェットのパレットを変更する必要があります。

p = w.palette()
p.setColor(w.backgroundRole(), Qt.red)
w.setPalette(p)
46
jmk