Qt Model View中的State_MouseOver在xp下不能被触发的问题

来源:互联网 发布:sql 存储过程 返回值 编辑:程序博客网 时间:2024/04/29 18:33

起因:

为了在鼠标hover列表中某一行时进行背景重绘,我重载了QStyledItemDelegate,在win7中程序运行正常,但是当我把程序放到xp环境时,却发现鼠标放置到某一行上时,界面无任何反映。加上debug信息之后,发现并没有触发delegate的paint()函数调用,这顿时让我茫然了。


尝试使用 setMouseTracking(true); 方法

但是效果很不理想,并且我也并不希望随时都能收到鼠标移动事件,最主要的问题是当鼠标已经移出view,但view中的item还是处于hover状态。

只好作罢。


经过google之后,终于在Qt的bug列表中找到了解决方法。

地址如下:https://bugreports.qt.nokia.com//browse/QTBUG-6063


按照备注中所给出的解决方案,需要设置viewport的WA_Hover属性

代码如下

viewport()->setAttribute(Qt::WA_Hover,true);


加入该代码之后,重新编译,该问题得以解决。


在此感谢该bug的提交者。