在我当前的应用程序中,我使用的是pyqtgraphs ParameterTree,它固有地为其元素实现了撤消功能。但是,这会干扰我的全局撤消堆栈,因此我想过滤Strg + Z事件。
ParameterTree继承自QTreeWidget,因此我尝试了一些方法。 首先,我尝试安装一个事件过滤器(但是不确定,如果我这样做是公平的,我不确定)。
class FooterWidget(ParameterTree):
""" Class for meta-properties of the map footer. """
def __init__(self, main_gui, parent=None):
super().__init__(parent=parent)
self.viewport().installEventFilter(self)
...
def eventFilter(self, object, event):
if isinstance(event, QKeyEvent):
return(event.key() & Qt.Key_Control > 0)
return False
但是,这不会阻止Ctrl + Z操作完成。同样,当我过滤任何keyPresses时(即eventFilter在任何情况下都返回True),我仍然看到一些可见的输入。这让我猜想,实际上实际事件是在实际事件过滤器之前传播到参数树的子级的。
keyPressEvent
方法的重新实现也无济于事。
有什么方法可以干扰参数树的本地撤消,或者更确切地说,它的各项?