Python 从样式表分析绘图自定义小部件的属性值

Python 从样式表分析绘图自定义小部件的属性值,python,pyside2,qtstylesheets,qproperty,Python,Pyside2,Qtstylesheets,Qproperty,我必须创建两个定制的qt小部件,其中一些使用定制绘图。 这些小部件应该通过公司qt样式表进行样式设置 这就产生了一个问题,即一些自定义小部件需要从已应用于QMainWindow或QApplication的样式表中检索一个值。 此值可以是qt的官方属性之一,也可以是某些自定义的qproperty-…属性 然而,从小部件访问它们并不是件小事。一个选项是获取样式表字符串并手动解析/正则表达式中我感兴趣的值。这显然是一个糟糕的解决方案,因为qt必须已经有一些功能来解析在绘制正式qt小部件期间使用的样式表

我必须创建两个定制的qt小部件,其中一些使用定制绘图。 这些小部件应该通过公司qt样式表进行样式设置

这就产生了一个问题,即一些自定义小部件需要从已应用于
QMainWindow
QApplication
的样式表中检索一个值。 此值可以是qt的官方属性之一,也可以是某些自定义的
qproperty-…
属性

然而,从小部件访问它们并不是件小事。一个选项是获取样式表字符串并手动解析/正则表达式中我感兴趣的值。这显然是一个糟糕的解决方案,因为qt必须已经有一些功能来解析在绘制正式qt小部件期间使用的样式表数据

。。。Qt创建了一个名为QStyleSheetStyle的QStyle子类 您可以通过常规QStyle方法查询样式表信息

问题1)

解决了这个问题,但不幸的是没有详细说明如何实际实现这一点。由于缺乏经验,即使在深入了解qt的源代码之后,我也无法找到如何做到这一点

问题2)

我假设这只适用于常规的qt属性(而不是自定义的
qproperty-…
property)。 与此方法相比,有更好的方法访问它们吗

# example for retrieving qproperty-offset
def get_offset(self):
    return self._offset

def set_offset(self, offset:int):
    self._offset = offset
    self.update()

offset = QtCore.Property(int, get_offset, set_offset)

不,目前还不可能,因为Qt样式表的实现是通过QStyle实现的,QStyle是私有qtapi的一部分,在Qt6中,它旨在公开该样式。因此,从样式表中获取属性的解决方案是通过qproperty。

感谢您的澄清。您可以使用QtCore.Property也获取“官方”属性,还是仅获取以qproperty-开头的属性。。。前缀另外,不幸的是,它似乎不包含您描述的QStyle修复。