我正在写一个小的pyqt程序。我希望主窗口对箭头运动做出反应。我向我的MainGui
班级keyPressEvent
添加了一个处理此事件的事件。只要我不按某些按钮(例如Key_Up
或Key_Down
),该活动就可以正常工作,这些按钮会定向到我(仅限当前)QComboBox
,而不是我的mainGui
。我尝试在每个mainGui
之后将焦点放在paintEvent
,但我需要双击按钮/ comboBox。
然后我尝试使用MousePressEvent
来检查某个元素是否在鼠标下面。这与comboBox工作正常,但不适用于按钮。
那么,如何将关键事件定向到mainGui
或将重点放在QButtons
?
答案 0 :(得分:0)
我使用eventFilter
来识别鼠标何时进入QPushButton
并给予关注:
def eventFilter(self,source,event):
if event.type() == QtCore.QEvent.HoverMove:
if self.execButton.underMouse():
self.execButton.setFocus()
self.keepFocus=False
else :
self.keepFocus=True
keepFocus
是我在类的__init__
函数中初始化的标志。我在paintEvent
函数
if self.keepFocus:
self.setFocus()
else:
self.keepFocus = True
现在,我将焦点保持在MainGui
,当鼠标移动到按钮上时,我只将它放在按钮上。如果我执行其他操作(例如按下鼠标按钮或键盘键),焦点将返回MainGui
。这将创建一些错误填充(例如,我需要在第一次响应之前按两次键盘键)但这是可行的。