The standalone widget works because Qt uses the basic stylesheet properties (background and border) only for top level windows, assuming that the top level window is of the same class as that specified in the stylesheet.
When a QWidget has a parent, it does not paint anything on its own.
As the documentation explains:
If you subclass from QWidget, you need to provide a paintEvent for your custom QWidget
So, in PyQt/PySide terms:
class Example(QtWidgets.QWidget):
# ...
def paintEvent(self, event):
opt = QtWidgets.QStyleOption()
opt.initFrom(self)
qp = QtGui.QPainter(self)
self.style().drawPrimitive(
QtWidgets.QStyle.PE_Widget, opt, qp, self)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…