我有一个带有QGraphicsView和按钮的QWidget。 QGraphicsView必须通过鼠标按下和释放事件来检测滑动。同时按下按钮应该在点击时运行一个小功能。我在QWidget中使用了一个事件过滤器来检测鼠标事件。
bool Widget::eventFilter(QObject * obj, QEvent * event)
{
// Capturing keyboard events for moving
if( event->type() == QEvent::KeyPress )
{
//Do something
}
//Capturing mouse events for swipe
else if( event->type() == QEvent::MouseButtonPress)
{
QMouseEvent* mouseEvent = static_cast<QMouseEvent*> (event);
swipe_startPoint = mouseEvent->pos();
}
else if( event->type() == QEvent::MouseButtonRelease)
{
QMouseEvent* mouseEvent = static_cast<QMouseEvent*> (event);
swipe_endPoint = mouseEvent->pos();
swipeDirection();
}
else
{
QWidget::eventFilter(obj,event);
}
}
在Widget类的构造函数中,我有以下
ui->graphicsView->installEventFilter(this);
问题是该按钮被点击了但是MouseButtonRelease事件设置了&#39; swipe_endPoint&#39;价值不起作用。
当我设置
ui->graphicsView->grabMouse();
鼠标按下并释放的事件工作正常,但按钮停止接受事件。
我尝试的其他事情是: -
将事件过滤器设置为viewPort
ui->graphicView->viewPort()->installEventFilter(this);
请帮我搞定这个鼠标事件。提前谢谢。
注意:在Ubuntu中使用QT 5.6.0