PySide6.QtWidgets.QProxyStyle

class QProxyStyle

QProxyStyle 类是一个便利类,它简化了动态覆盖 QStyle 元素的过程。更多

PySide6.QtWidgets.QProxyStyle 的继承图

概要

方法

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

一个 QProxyStyle 包装了一个 QStyle(通常是默认的系统样式),目的是为了动态地覆盖绘制或其他特定的样式行为。

以下示例展示了如何在任何平台上覆盖快捷方式下划线行为:

from textedit import *
from PySide6.QtWidgets import QApplication
from PySide6.QtWidgets import QProxyStyle
class MyProxyStyle(QProxyStyle):

#   public
    int styleHint(StyleHint hint, QStyleOption option = None,
                  widget = None, QStyleHintReturn returnData = None) override()

        if hint == QStyle.SH_UnderlineShortcut:
            return 0
        return QProxyStyle.styleHint(hint, option, widget, returnData)


if __name__ == "__main__":

    Q_INIT_RESOURCE(textedit)
    a = QApplication(argc, argv)
    a.setStyle(MyProxyStyle())
    mw = TextEdit()
    mw.resize(700, 800)
    mw.show()
    #...

警告:由Qt提供的common styles将遵循此提示,因为它们调用了proxy(),但不能保证用户定义或系统控制的样式会调用proxy()。例如,在Mac上,菜单由操作系统处理,这将不起作用。

当代理样式应仅设置在特定的小部件上时,您必须确保不在由style()返回的全局应用程序样式上设置代理。您必须为小部件创建一个单独的自定义样式,类似于:

...
proxy = MyProxyStyle(QApplication.style().name())
proxy.setParent(widget) # take ownership to avoid memleak
widget.setStyle(proxy)
...

另请参阅

QStyle

__init__([style=None])
Parameters:

样式QStyle

构造一个QProxyStyle对象,用于覆盖指定style中的行为,如果未指定style,则覆盖默认的本地style

style 的所有权被转移到 QProxyStyle

__init__(key)
Parameters:

key – str

构造一个QProxyStyle对象,用于覆盖由样式key指定的基础样式中的行为,或者如果指定的样式key未被识别,则覆盖当前application style中的行为。

另请参阅

create()

baseStyle()
Return type:

QStyle

返回代理基础样式对象。如果代理样式上没有设置基础样式,QProxyStyle 将创建应用程序样式的实例。

另请参阅

setBaseStyle() QStyle

setBaseStyle(style)
Parameters:

样式QStyle

设置应代理的基本样式。

style 的所有权已转移给 QProxyStyle

如果样式是None,将自动分配一个依赖于桌面的样式。

另请参阅

baseStyle()