Pyqt5 QToolButton 设置样式 sheet 与 autoRaise 方法

Pyqt5 QToolButton set style sheet with the autoRaise method

我正在为 GUI 创建样式sheet .qss 文件。我正在尝试将 QToolButton 方法 autoRaise 添加到样式 sheet 中:

btn_on  = QToolButton()
btn_on.setStyleSheet("""
                 QToolButton:autoRaised{
                 color: rgb(0,0,0);
                 background-color: rgb(142,142,142);
                 }
                 """)
btn_on.setAutoRaise(True)

但它不识别 autoRaise 属性。这与您为 QPushButton 定义 disabled 属性相同,它正在工作:

ss = QPushButton()
ss.setStyleSheet("""
                 QToolButton:autoRaised{
                 color: rgb(0,0,0);
                 background-color: rgb(142,142,142);
                 }
                 """)
ss.setDisabled(True)

如何在 .qss 文件中定义 autoRaise 属性?

autoRaise没有最后的“D”)是一个 Qt 属性.

:syntax用于伪状态,通常表示小部件的状态或通用属性。
它们是预定义的并且对所有小部件都是通用的,即使某些状态仅由某些小部件支持(例如 :read-only 用于文本小部件)并且基于 CSS 伪 类;查看完整的 list of supported pseudo states.

如果要设置基于属性的样式,必须正确使用property selector syntax:

    QToolButton[autoRaise="true"] {
        color: rgb(0,0,0);
        background-color: rgb(142,142,142);
    }

请注意,在某些情况下,样式可能会覆盖某些绘画或完全忽略颜色。例如,在 Linux 的 Oxygen 和 Breeze 样式中,悬停样式会忽略颜色并使用默认绘画。

另请注意,样式表仅计算一次,因此如果 属性 发生更改,则不会反映更改:您需要再次重新设置样式表。 不能自动完成。

    btn_on.setAutoRaise(False)
    btn_on.setStyleSheet(btn_on.styleSheet())

如果样式表是在父项或应用程序上设置的,而目标小部件没有设置样式表,则必须为该父项或应用程序重新设置样式表。