分析样式表中的属性值以绘制自定义小部件



我必须创建几个自定义qt小部件,其中一些使用自定义绘图。这些小部件应该通过companyqt样式表进行样式设置。

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

但是,从小部件访问它们并非易事。一种选择是获取样式表字符串并手动解析/regex出我感兴趣的值。这显然是一个糟糕的解决方案,因为qt必须已经有一些功能来解析在绘制官方qt小部件时使用的样式表数据。

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

问题1(

这篇文章阐述了这个想法,但不幸的是,没有详细说明如何真正实现这一点。由于我缺乏经验,我无法找到如何做到这一点,即使在深入研究qt的来源之后也是如此。

问题2(

我认为这只适用于常规qt属性(而不适用于自定义qproperty-...属性(。与这种方法相比,是否有更好的方法来访问它们?

# 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样式表的实现是通过作为私有Qt API一部分的QStyle实现的,所以在Qt6中它打算公开该样式。因此,从样式表中获取属性的解决方案是通过qproperty。

最新更新