我想在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);默认是要按住鼠标键才能捕获到移动事件的。
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);