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&)));
...全文
596 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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才产生菜单了。

16,818

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧