如何在任意QWidget上捕获鼠标事件?

时间:2013-06-20 13:00:40

标签: qt events pyqt pyside

我正在使用PythonQt构建GUI。标准小部件非常有用,开箱即用。但是,我对鼠标手势有一些想法。更准确地说,一个按钮或标签或文本,在点击鼠标按住鼠标后,将鼠标移动到周围会产生特殊效果。

为以下事件添加鼠标支持需要什么

  • 鼠标在可见的
  • 上点击了小部件A.
  • 鼠标移动到x,y(实时)
  • 鼠标已发布

到任意小部件?


现在我正在尝试通过类A执行此操作,该类继承QAbstractItemView并拥有QWidget。然而,没有任何作用和

  

NotImplementedError:QAbstractItemView.verticalOffset()是抽象的,必须重写

1 个答案:

答案 0 :(得分:2)

QAbstractItemView对您的任务没有帮助。

您可以使用installEventFilter在任意窗口小部件上安装事件过滤器。您的过滤器类必须从QObject继承。该文档包含一些有用的示例。见QObject::installEventFilter。如果要一次在所有小部件上安装过滤器,可以为QApplication实例安装过滤器。

另一种选择是子类QWidget(或任何其他QWidget派生类)并重新实现其mousePressEventmouseMoveEventmouseReleaseEvent虚函数。