QT ListView右键弹出菜单问题

雒珣 程序员  2019-12-10 03:58:57

求助大神 ,最近使用QT界面开发,遇到以下问题:
我希望只在单击列表的item时弹出菜单,并且在单击空白处时,item不再有选中的项。
现在单击空白区域时,item也是选中的状态,右键单击空白区域时,也会弹出菜单项。
右键单击使用的是网上找的以下语句:
ui.listView->setContextMenuPolicy(Qt::CustomContextMenu);
connect(ui.listView, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(show_contextmenu1(const QPoint&)));
...全文
248 点赞 收藏 3
写回复
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
雒珣 2019-12-18
谢谢大家,该问题已经解决了,解决方式与2楼提供方法一致,实现代码如下供搜到此贴的人参考: 在槽函数show_contextmenu1(const QPoint&)中添加判断: if(ui.listView->indexAt(pos).isValid()) { //这里弹出菜单 }
回复
donwmufromdying 2019-12-18
你这个需求非常常见,一般的处理方法是在你的上下文菜单(右键菜单),响应中获取你的鼠标点击位置QPoint,判断是否在有效围栏中(是否在你希望出现右键菜单的某块区域中),如果不在就直接返回
回复
setFocusPolicy(Qt::NoFocus); 可以让item失去焦点 ui.listView, SIGNAL(customContextMenuRequested(const QPoint&)), 这个信号应该只有右键才会产生 所以你的item需要重载鼠标事件,这样就可以随心所欲 单击那个item才产生菜单了。
回复
相关推荐
发帖
Qt
创建于2009-11-04

1.3w+

社区成员

Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
申请成为版主
帖子事件
创建了帖子
2019-12-10 03:58
社区公告
暂无公告