如何设置 QWidget 背景颜色?

Posted

技术标签:

【中文标题】如何设置 QWidget 背景颜色?【英文标题】:How to set QWidget background color? 【发布时间】:2012-09-21 06:07:32 【问题描述】:

下面代码中的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_()

【问题讨论】:

【参考方案1】:

您也可以使用setStyleSheet,例如:

w.setAttribute(Qt.Qt.WA_StyledBackground, True)
w.setStyleSheet('background-color: red;')

【讨论】:

【参考方案2】:

您需要在小部件上调用setAutoFillBackground(True)。默认情况下,QWidget 不会填充其背景。

有关详细信息,请参阅setAutoFillBackground 属性的文档。

如果您想使用任意背景颜色,则需要修改小部件的调色板:

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

【讨论】:

欢迎来到***!感谢您回答“为什么”和“如何”! 没问题。我应该补充一点,Qt 文档有点不清楚:QPalette::Window 角色用于填充小部件的背景(如果它是***窗口)。否则,将使用您的小部件的 backgroundRole,因此您的代码应该按预期工作。

以上是关于如何设置 QWidget 背景颜色?的主要内容,如果未能解决你的问题,请参考以下文章

为自定义 QWidget 设置背景颜色

Qwidget的背景颜色改变时程序随机崩溃

修改QWidget 背景色

QWidget中如何实现mouseEnter和mouseLeave事件?

在另一个 Widget 中更改 QWidget 的背景颜色

QTextEdit中选中文本修改字体与颜色,全部文本修改字体与颜色(设置调色板的前景色背景色文字颜色以及基色)