在我的应用程序中,我可能有多个QPlainTextEdit
小部件。我还为这个小部件设置了字体的全局设置,当我在全局设置中更改此字体时,我希望新字体自动传播到应用程序中所有现有的QPlainTextEdit
实例。我可能需要使用QApplication.setFont(font, "QPlainTextEdit")
,但这似乎适用于其他类型的小部件,但不适用于QPlainTextEdit
。在
我现在的工作感觉很差劲。我重写了QPlainTextEdit
,并将该子类命名为CodeEditWidget
,并进行了以下操作:
def event(self, event):
if event.type() == QtCore.QEvent.ApplicationFontChange:
self.setFont(Settings.codeFont) # I need to keep the font in some global place
return super(CodeEditWidget, self).event(event)
嗯,很管用,但我不太喜欢。当然我更喜欢自动传播。如果这是不可能的,我宁愿不必保留它,并通过一些全局设置来传递它。有可能吗?如何以标准方式在这个event()
函数中设置字体?在
更新:我把问题缩小到这个片段:
^{pr2}$虽然注释掉的行将更改两个编辑框的字体,但带setFont(font, "MyText")
的行将不起任何作用。在
此问题似乎存在于PyQt5
。另一方面,我用PySide
和PyQt4
(relpaced QtWidgets
和{PyQt5
中的错误,要么是我做错了什么?在
我可以在PyQt-5.7中确认这种行为。在
它似乎是一个bug,因为相同的问题并没有出现在latest development snapshot(PyQt5 gpl-5.7.1.dev1611257)中。所以在PyQt-5.7.1发布之前,您似乎必须使用当前的工作环境。在
相关问题 更多 >
编程相关推荐