将样式表应用于提升的widg

2024-10-02 12:23:58 发布

您现在位置:Python中文网/ 问答频道 /正文

在推广了我的小部件(如SO Link中的答案)之后,我建议在这个特定的小部件上应用我的样式表有困难。请使用@eyllanesc提供的答案作为工作代码。你知道吗

我读过类似的问题,其中一些建议在事件中处理这个问题?你知道吗

我已经尝试在Mainform类和UiLoader类中应用这个样式表,并且还进行了切换小部件.设置样式表与自我设置样式表把它放在油漆上。我也尝试过在QWidget之前不使用点,并用QObject切换QWidget。这些尝试似乎都不管用。你知道吗

widget.setStyleSheet("""
    .QWidget{
        border: 1px solid grey;
        border-radius: 2px;
        background-color: rgb(255, 255, 255);
        }
    """)

样式表在Designer中工作,但是当我运行程序时,样式表没有被应用。你知道吗


Tags: 答案代码so部件事件link样式表建议
1条回答
网友
1楼 · 发布于 2024-10-02 12:23:58

如果希望小部件支持QSS,则必须使用QStyle进行绘制,因为它在内部使用QSS:

class Drawer(QtWidgets.QWidget):
    def paintEvent(self, event):
        opt = QtWidgets.QStyleOption()
        opt.init(self)
        qp = QtGui.QPainter(self)
        self.style().drawPrimitive(QtWidgets.QStyle.PE_Widget, opt, qp, self)
        self.drawGeometry(qp)
        qp.end()

    def drawGeometry(self, qp):
        qp.setPen(QtGui.QPen(QtCore.Qt.green, 8, QtCore.Qt.DashLine))
        qp.drawEllipse(40, 40, 400, 400)

您还必须使用以下QS:

# ...
loader = UiLoader()
self.ui_window = loader.load(ui_file)
ui_file.close()
self.ui_window.show()
self.ui_window.widget.setStyleSheet(
    """
    QWidget{
        border: 1px solid grey;
        border-radius: 2px;
        background-color: rgb(255, 255, 255);
    }
"""
)

# ...

enter image description here

相关问题 更多 >

    热门问题