首先,自定义类中的代码
WrappedLabel
与手动小部件不完全相同。对于手动小部件,请确保样式表仅应用于小部件本身,而不是通过
QWidget#wrapper
. 对于自定义类,只需将样式表应用于
包装标签
实例,该实例将导致
cascade
它的所有子窗口小部件(以及
QLabel
实例)。这就是为什么你
QLabel公司
实例以填充和红色边框结束。
那么,为什么包装器没有发生同样的情况呢?显然是自定义基类
QWidget
s默认情况下拒绝所有应用的样式表(请参见
this answer
). 您可以通过添加
self.setAttribute(QtCore.Qt.WA_StyledBackground)
在里面
WrappedLabel.__init__
. 现在,您将看到最终有两个边框,一个用于包装,一个用于标签。要将样式表限制为包装器,需要应用与手动小部件类似的标识符:
self.setStyleSheet('WrappedLabel { padding: 2px; border: 2px solid red; }')
.
因此,要使其发挥作用,您可以将此添加到
包装标签__初始化__
:
self.setAttribute(QtCore.Qt.WA_StyledBackground)
self.setStyleSheet('WrappedLabel { padding: 2px; border: 2px solid red; }')