正在解析样式表中的 属性 个值以绘制自定义小部件
Parsing property values from stylesheet for drawing custom widgets
我必须创建几个自定义 qt 小部件,其中一些使用自定义绘图。
这些小部件应通过公司的 qt 样式表设置样式。
这会产生一些自定义小部件需要从已应用于 QMainWindow
或 QApplication
的样式表中检索值的问题。
该值可以是 qt 的官方属性之一,也可以是一些自定义 qproperty-...
属性
但是,从小部件访问它们并非易事。一种选择是获取样式表字符串并手动 parse/regex 出我感兴趣的值。这显然是一个糟糕的解决方案,因为 qt 必须已经具有一些功能来解析在绘制官方期间使用的样式表数据qt 小部件。
... Qt creates a QStyle sub-class called QStyleSheetStyle.That means
you can query style sheet information via the normal QStyle methods
...
问题 1)
This post 解决了这个想法,但遗憾的是没有详细说明如何实际实现这一点。由于我缺乏经验,即使深入研究了 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 Style Sheet 的实现是通过 QStyle 实现的,它是私有 Qt API 的一部分,在 Qt6 中它旨在公开该样式。所以从样式表中获取属性的解决方案是通过 qproperty.
我必须创建几个自定义 qt 小部件,其中一些使用自定义绘图。 这些小部件应通过公司的 qt 样式表设置样式。
这会产生一些自定义小部件需要从已应用于 QMainWindow
或 QApplication
的样式表中检索值的问题。
该值可以是 qt 的官方属性之一,也可以是一些自定义 qproperty-...
属性
但是,从小部件访问它们并非易事。一种选择是获取样式表字符串并手动 parse/regex 出我感兴趣的值。这显然是一个糟糕的解决方案,因为 qt 必须已经具有一些功能来解析在绘制官方期间使用的样式表数据qt 小部件。
... Qt creates a QStyle sub-class called QStyleSheetStyle.That means you can query style sheet information via the normal QStyle methods ...
问题 1)
This post 解决了这个想法,但遗憾的是没有详细说明如何实际实现这一点。由于我缺乏经验,即使深入研究了 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 Style Sheet 的实现是通过 QStyle 实现的,它是私有 Qt API 的一部分,在 Qt6 中它旨在公开该样式。所以从样式表中获取属性的解决方案是通过 qproperty.