首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

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

2012-09-17 
eventFilter函数中如何捕获鼠标移动事件我想在eventFilter函数中捕获QLabel的鼠标移动事件,代码如下:C/C++

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

热点排行