繁体   English   中英

如何接收QGraphicsView的滚动条鼠标事件

[英]How to receive scrollbar mouse events for QGraphicsView

在qt小部件QGraphicsView我想检测鼠标按下,鼠标释放和鼠标移动事件。 我从QGraphicsView派生了一个类,并且重写了以下功能:

  • mousePressEvent(QMouseEvent * event)
  • mouseReleaseEvent(QMouseEvent * event)
  • mouseMoveEvent(QMouseEvent * event)

现在,除了滚动条所在的区域(属于QGraphicsView一部分)之外,几乎所有地方都可以检测到这些鼠标事件。 我希望能够捕获这些事件并手动移动滚动条。

编辑:
我正在尝试在Windows环境中模拟第二个鼠标发送WM_LBUTTONDOWN,...事件。 我也希望能够为QGraphicsView滚动条检测到此事件。 除了检测事件之外,我还想知道event-> x()和event->()y位置。

QGraphicsView继承了QAbstractScrollArea类。 因此,可以使用QAbstractScrollArea::verticalScrollbarQAbstractScrollArea::horizontalScrollbar方法访问滚动条小部件。

一旦您可以访问滚动条对象,甚至不必使用事件过滤器,因为QScrollBar继承了QAbstractSlider并因此提供了信号:

QAbstractSlider::sliderPressed()
QAbstractSlider::sliderReleased()

因此,您可以将它们连接到插槽,例如:

connect(horizontalScrollBar(), SIGNAL(sliderPressed()), this, SLOT(doSomething()));
connect(horizontalScrollBar(), SIGNAL(sliderReleased()), this, SLOT(doSomething()));

如果您需要事件的位置,则必须使用事件过滤器。 您可以在小部件对象上安装事件过滤器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM