如何接收 QGraphicsView 的滚动条鼠标事件
How to receive scrollbar mouse events for QGraphicsView
在 qt 小部件中 QGraphicsView
我想检测鼠标按下、鼠标释放和鼠标移动事件。
我从 QGraphicsView
派生了一个 class 并且覆盖了以下函数:
- mousePressEvent(QMouseEvent *事件)
- mouseReleaseEvent(QMouseEvent *事件)
- mouseMoveEvent(QMouseEvent *事件)
现在我几乎可以在任何地方检测到这些鼠标事件,除了滚动条所在的区域,它是 QGraphicsView
的一部分。
我希望能够捕获这些事件并手动移动滚动条。
编辑:
我正在尝试在 windows 环境中模拟第二只鼠标发送 WM_LBUTTONDOWN,... 事件。我希望也能够为 QGraphicsView
中的滚动条检测到此事件。
除了检测事件,我还想知道 event->x() 和 event->()y 的位置。
QGraphicsView
继承了QAbstractScrollArea
class。因此可以使用 QAbstractScrollArea::verticalScrollbar
和 QAbstractScrollArea::horizontalScrollbar
方法访问滚动条小部件。
一旦可以访问滚动条对象,您甚至不必使用事件过滤器,因为 QScrollBar
继承了 QAbstractSlider
并因此提供了信号:
QAbstractSlider::sliderPressed()
QAbstractSlider::sliderReleased()
因此您可以将它们连接到您的插槽,例如:
connect(horizontalScrollBar(), SIGNAL(sliderPressed()), this, SLOT(doSomething()));
connect(horizontalScrollBar(), SIGNAL(sliderReleased()), this, SLOT(doSomething()));
如果您需要事件的位置,则必须使用事件过滤器。您可以在小部件对象上安装事件过滤器。
在 qt 小部件中 QGraphicsView
我想检测鼠标按下、鼠标释放和鼠标移动事件。
我从 QGraphicsView
派生了一个 class 并且覆盖了以下函数:
- mousePressEvent(QMouseEvent *事件)
- mouseReleaseEvent(QMouseEvent *事件)
- mouseMoveEvent(QMouseEvent *事件)
现在我几乎可以在任何地方检测到这些鼠标事件,除了滚动条所在的区域,它是 QGraphicsView
的一部分。
我希望能够捕获这些事件并手动移动滚动条。
编辑:
我正在尝试在 windows 环境中模拟第二只鼠标发送 WM_LBUTTONDOWN,... 事件。我希望也能够为 QGraphicsView
中的滚动条检测到此事件。
除了检测事件,我还想知道 event->x() 和 event->()y 的位置。
QGraphicsView
继承了QAbstractScrollArea
class。因此可以使用 QAbstractScrollArea::verticalScrollbar
和 QAbstractScrollArea::horizontalScrollbar
方法访问滚动条小部件。
一旦可以访问滚动条对象,您甚至不必使用事件过滤器,因为 QScrollBar
继承了 QAbstractSlider
并因此提供了信号:
QAbstractSlider::sliderPressed()
QAbstractSlider::sliderReleased()
因此您可以将它们连接到您的插槽,例如:
connect(horizontalScrollBar(), SIGNAL(sliderPressed()), this, SLOT(doSomething()));
connect(horizontalScrollBar(), SIGNAL(sliderReleased()), this, SLOT(doSomething()));
如果您需要事件的位置,则必须使用事件过滤器。您可以在小部件对象上安装事件过滤器。