读书人

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

发布时间: 2012-09-17 12:06:51 作者: rapoo

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)有时候会莫名其妙的不好用,用其他的办法能达到目的就行了。

读书人网 >QT开发

热点推荐