当前位置: 代码迷 >> QT开发 >> eventFilter函数中怎么捕获鼠标移动事件
  详细解决方案

eventFilter函数中怎么捕获鼠标移动事件

热度:120   发布时间:2016-04-25 04:35:22.0
eventFilter函数中如何捕获鼠标移动事件
我想在eventFilter函数中捕获QLabel的鼠标移动事件,代码如下:
C/C++ code
bool RubberBandWidget::eventFilter(QObject *object, QEvent *event){if(object == finishLabel){if(event->type() == QEvent::MouseMove)        {            qDebug() << "Mouse moving...";            finishLabel->setPixmap(QPixmap(":/sunsong/images/shotscreen_finish_gray.png"));            return true;        }}}

我在RubberBandWidget构造函数中加了setMouseTracking(true);
当我把鼠标移动到finishLabel上时,并没有实现我想要的结果,当我按住鼠标进行拖动的时候,我要的效果实现了。但是我要的效果是当鼠标移动到finishLabel上,就改变finishLabel的图片。请问我的代码错在哪里?望指教!谢谢!

------解决方案--------------------
在构造函数里面加上这句 setMouseTracking(true);默认是要按住鼠标键才能捕获到移动事件的。
------解决方案--------------------
C/C++ code
bool RubberBandWidget::eventFilter(QObject *object, QEvent *event){if(object == finishLabel){if(event->type() == QEvent::Enter)//Enter鼠标进入,Leave鼠标离开        {            qDebug() << "Mouse moving...";            finishLabel->setPixmap(QPixmap(":/sunsong/images/shotscreen_finish_gray.png"));            return true;        }}    return QWidget::eventFilter(object,event)//调用基类函数,把事件传递下去。}
------解决方案--------------------
我以前发现setMouseTracking(true)有时候会莫名其妙的不好用,用其他的办法能达到目的就行了。
  相关解决方案