在图形视图框架中,只有鼠标按钮按下时,视图才会接收鼠标移动事件。如果启用了鼠标跟踪即设置setMouseTracking(true)或者setAttribute(Qt::WA_MouseTracking,true),则即使未按下任何按钮,视图也会接收鼠标移动事件。这对跟踪鼠标位置非常方便。但是,如果鼠标离开视图,点击工具栏按钮后,再回到视图,程序立马崩溃。这就是个大坑,还找不出原因。
现在通过拦截鼠标悬停事件加以解决:如下图:
事件后面一定要加上return QGraphicsView::event(event);否则,又会出现一大堆垃圾!