1、首先控件先开启鼠标追踪,否则无法收到鼠标悬停的事件,setMouseTarck;
2、QEvent::Enter为检测到鼠标进入时,QEvent::Leave为检测到鼠标离开时,但是有其他的menu弹出时,也会触发当前界面的QEvent::Leave,所以判断时多加一层 !this->rect().contains(this->mapFromGlobal(QCursor::pos()),来判断鼠标是否在控件内;
3、也可用QStyleOption的QStyle::State_MouseOver来判断是否有鼠标悬停,QStyle::State_Selected来判断是否有鼠标选中,用之前QStyleOption需先初始化,init(this);
4、鼠标选中时,QStyle::State_Selected与QStyle::State_MouseOver同时为True,以此为判断时,需小心谨慎,确保逻辑无误;
后续想到的再记录