我从QGraphiscItem子类化了一个类CImageInfo, 做如下配置:
1 设置ItemIgnoreTransfertion为TRUE;
2 在boundingRect()中返回的是一个(0,0)开始的矩形。
3 重新实现了hoverMoveEvent,用于获取鼠标坐标,如下:
void CImageInfo::hoverMoveEvent( QGraphicsSceneHoverEvent * event)
{
ptMouse = event->pos();
}
现在在GraphiscView的wheelEvent()中使用scale(factor, factor)进行放大500倍,结果鼠标还
没有到达CImageInfo的区域就触发了CImageInfo::hoverMoveEvent(), ptMouse的值为(-135, 50), 并且CImageInfo::paint()中option->state
& QStyle::State_MouseOver也为true。我试了一下, 鼠标滑到在CImageInfo中心开始的的左上角一个较大的矩形区域内都能触发CImageInfo::hoverMoveEvent(),点击能选择并且可以拖动,在
其他区域不能,这是什么原因呢?(现象见下图)
[ 此帖被vboylin在2010-12-06 13:00重新编辑 ]