快速提问,为什么:
void roiwindow::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
QGraphicsScene::mouseMoveEvent(event);
qDebug() << event->button();
}
当我在图形界中移动光标的同时按住鼠标左键时,返回0而不是1。反正有没有让它返回1,所以我可以告诉用户何时在图形界面上拖动鼠标。感谢。
答案 0 :(得分:11)
虽然Spyke的回答是正确的,但您可以使用buttons()
(docs)。 button()
返回导致事件的鼠标按钮,这就是它返回Qt::NoButton
的原因;但是buttons()
会在事件被触发时返回按住的按钮,这就是你所追求的。
答案 1 :(得分:7)
您可以通过查看buttons
属性
if ( e->buttons() & Qt::LeftButton )
{
// left button is held down while moving
}
希望有所帮助!
答案 2 :(得分:1)
mouse move events的返回值始终为Qt :: NoButton。您可以使用事件过滤器来解决此问题。
试试这个
bool MainWindow::eventFilter(QObject *object, QEvent *e)
{
if (e->type() == QEvent::MouseButtonPress && QApplication::mouseButtons()==Qt::LeftButton)
{
leftbuttonpressedflag=true;
}
if (e->type() == QEvent::MouseMove)
{
QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(e);
if(leftbuttonpressedflag && mouseEvent->pos()==Inside_Graphics_Scene)
qDebug("MouseDrag On GraphicsScene");
}
return false;
}
并且不要忘记在主窗口中安装此事件过滤器。
qApplicationobject->installEventFilter(this);