例如,有一个大控件,大控件中间有个小控件,如果我鼠标在大控件上移动,不小心移到了小控件上,那么就触发了大控件的HoverLeave,有什么属性,可以使小控件不接收这样的消息,这样,在大控件上移动鼠标的时候,就算移动到了小控件上,也不会触发HoverLeave了,不知道你们听懂了没,有点绕哦
------解决方案--------------------
貌似没有简单的设置属性可以解决的。
可能需要自己写eventfilter
------解决方案--------------------
+1
------解决方案--------------------
setMouseTracking(false)试试
------解决方案--------------------
采用eventFilter吧,正好有个帖子你可以参考下:
http://bbs.csdn.net/topics/390315872
2楼的答案很不错,你可以参考下,通过过滤器,这样就可以避免小控件触发了.
------解决方案--------------------
不会的吧,这个eventFilter(QObject *obj, QEvent *event)参数obj是指代对象指针,比如你的QLabel或者QLineEdit,event指代的是QEvent,QEvent有QEvent::HoverEnter这个枚举类型,那么就是支持的啊.不会因为label没有这个QEvent::HoverEnter事件就不能过滤了吧?我之前写QLabel的clicked事件也是用过滤写的啊.
给你一段参考代码,来自Qt Assistant:
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
if (obj == textEdit) {
if (event->type() == QEvent::KeyPress) {
QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
qDebug() << "Ate key press" << keyEvent->key();
return true;
} else {
return false;
}
} else {
// pass the event on to the parent class
return QMainWindow::eventFilter(obj, event);
}
}
------解决方案--------------------
你触发LineEdit的Hover事件肯定做了处理,那你把这些处理代码直接放进去Label的这个处理模块就行.
------解决方案--------------------
额,这个还真棘手了.我暂时也没想到好办法.思考ing...
