我正在尝试创建一个自定义的QWidget(来自PyQt5),可以更改其背景颜色。 然而,所有设置背景颜色的标准方法似乎都不能用于自定义QWidget类。
到目前为止,我已经尝试通过QSS样式表和设置调色板来更改颜色。这对常规QWidget有效,但是出于某种原因不适用于自定义小部件。
在C ++文档中,我找到了自定义QWidgets需要paintEvent()函数的参考https://wiki.qt.io/How_to_Change_the_Background_Color_of_QWidget 并且在Python中也找到了一个引用。 但是,实施链接的paintevent失败,因为在PyQt5中似乎不存在QStyleOption。
下面显示了我创建的QWidget类的高级别和我用于Widget的QSS(样式已在父Widget中设置,但尝试直接设置它)。
到目前为止,我已经尝试通过QSS样式表和设置调色板来更改颜色。这对常规QWidget有效,但是出于某种原因不适用于自定义小部件。
在C ++文档中,我找到了自定义QWidgets需要paintEvent()函数的参考https://wiki.qt.io/How_to_Change_the_Background_Color_of_QWidget 并且在Python中也找到了一个引用。 但是,实施链接的paintevent失败,因为在PyQt5中似乎不存在QStyleOption。
下面显示了我创建的QWidget类的高级别和我用于Widget的QSS(样式已在父Widget中设置,但尝试直接设置它)。
class AlarmWidget(QWidget):
def __init__(self, alarm, parent=None):
super(AlarmWidget, self).__init__(parent)
self.setFixedHeight(200)
self.setProperty("active", True)
self.setAutoFillBackground(True)
p = self.palette()
p.setColor(self.backgroundRole(), PyQt5.QtCore.Qt.red)
self.setPalette(p)
AlarmWidget {
background-color: red
}
总体来说,无论我做什么,它都不允许我为自定义QWidget设置背景颜色,非常需要帮助。
init()
更改为initFrom()
,2)将一些类从QtGui移动到QtWidgets。 - eyllanesc