如果我在QDialog中有两个按钮,buttonA和buttonB。当我用鼠标点击buttonA并移动光标时,鼠标仍然点击buttonB,我无法检测到HoverEnter事件。这可能是由于pyqt将鼠标抓取设置为buttonA。我找不到一种方法来检测输入事件,当鼠标在输入按钮时被点击。 示例代码:
class MainDialog(QtWidgets.QDialog):
def __init__(self, parent=None):
super(MainDialog, self).__init__()
self.installEventFilter(self)
self.buttonA= QtWidgets.QPushButton(MainDialog)
self.buttonB= QtWidgets.QPushButton(MainDialog)
self.buttonA.installEventFilter(self)
self.buttonB.installEventFilter(self)
def eventFilter(self, source, event):
if event.type() == QtCore.QEvent.HoverEnter:
print("HOVERE ENTER")
return True
我的平台是基于Python3.7和Pyqt5的Windows10
我还尝试在第一次鼠标单击后忽略()事件,以丢失鼠标抓取和if self.buttonB.underMouse():(在事件筛选器中)但仍然没有成功
简单的回答是,当在接受按钮按下事件的小部件上单击鼠标按钮时,只有该小部件将接收鼠标移动事件,直到释放鼠标按钮为止
代码中存在各种各样的问题,使您无法获得想要的:
super().eventFilter(source, event)
(这非常重要)李>self
)李>最后,当另一个小部件通过单击按钮“抓取”鼠标时,无法跟踪enter事件,因此您只能找到另一种方法来获取它一次,因为您只能使用鼠标移动事件来查找它
这是一种可能的实现方式:
相关问题 更多 >
编程相关推荐