首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当鼠标离开QListView时,ListViewItem停留在鼠标悬停状态

当鼠标离开QListView时,ListViewItem停留在鼠标悬停状态
EN

Stack Overflow用户
提问于 2018-05-29 01:11:18
回答 1查看 347关注 0票数 0

当鼠标光标离开QListview时,我试图从项中删除鼠标悬停状态。

我在QStyledItemDelegate中检查鼠标悬停状态,如下所示:

void MyDelegate::paint( QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index ) const
{
    if( option.state & QStyle::State_MouseOver)
     {
        // Paint in MouseOver state
     }
     else
     {
        // Paint normally
     }
 }

然后,我在我的QListView中实现了leaveEvent来调用更新。

void MyListView::leaveEvent(QEvent *event)
{
   // update();  
   QListView::leaveEvent(event);
   update();   // Same result if update() called before or after QListView::leaveEvent 
}

这将调用leave代理的paint方法,但不会更改QListView中最后悬停的项的悬停状态。

有没有办法强制代理重新绘制,并且当光标离开列表视图时不处于鼠标悬停状态?

我使用的是Qt 5.6,我已经在Centos 7和Fedora 27和28上进行了测试。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-30 22:02:04

这似乎是QT 5.6版本中的一个bug。我把QT版本升级到了5.11,解决了这个问题。升级后不需要实现QListView::leaveEvent。

我还在QT 5.10上测试了代码,它在那里运行得很好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50570922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档