web-dev-qa-db-fra.com

Comment définir la couleur d'arrière-plan QWidget?

La ligne w.setBackgroundRole(QPalette.Base) dans le code ci-dessous n'a aucun effet. Pourquoi? Comment puis-je résoudre ce problème?

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

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

Vous devez appeler setAutoFillBackground(True) sur le widget. Par défaut, un QWidget ne remplit pas son arrière-plan.

Pour plus d'informations, consultez la documentation de la propriété setAutoFillBackground .

Si vous souhaitez utiliser une couleur d'arrière-plan arbitraire, vous devez modifier la palette du widget à la place:

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