0

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

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

但是,从小部件访问它们并非易事。一种选择是获取样式表字符串并手动解析/正则表达式出我感兴趣的值。这显然是一个糟糕的解决方案,因为 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)
4

1 回答 1

1

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

于 2020-11-28T23:11:01.093 回答