本文属于《QTreeView使用系列教程》之一,欢迎查看其它文章。

我们在上一节基础上添加右键菜单及其图标。

QTreeView也是属于QWidget,所以也适用于QWidget右键菜单的添加方式。

首先使用setContextMenuPolicy()定制菜单:

// 为treeView添加右键菜单
treeView->setContextMenuPolicy(Qt::CustomContextMenu);
connect(treeView, &QTreeView::customContextMenuRequested, this, &MainWindow::onTreeViewMenuRequested);

然后在槽函数onTreeViewMenuRequested()中处理菜单创建和弹出:

void MainWindow::onTreeViewMenuRequested(const QPoint &pos)
{QModelIndex curIndex = treeView->indexAt(pos);if (curIndex.isValid()) // 右键选中了有效index{QIcon view = QApplication::style()->standardIcon(QStyle::SP_MessageBoxInformation);QIcon test = QApplication::style()->standardIcon(QStyle::SP_DesktopIcon);// 创建菜单QMenu menu;menu.addAction(view, tr("查看"), this, &MainWindow::onActionView);menu.addSeparator();menu.addAction(test, tr("测试"), this, &MainWindow::onActionTest);menu.exec(QCursor::pos());}
}

菜单中2个Action槽函数处理响应:

void MainWindow::onActionView()
{QModelIndex curIndex = treeView->currentIndex();QModelIndex index = curIndex.sibling(curIndex.row(), 0); // 获取同一行第0列if(index.isValid()){QMessageBox::information(this, tr("信息"), index.data().toString());}
}
void MainWindow::onActionTest()
{QMessageBox::information(this, tr("信息"), tr("test"));
}

效果如下:


若对你有帮助,欢迎点赞、收藏、评论,你的支持就是我的最大动力!!!

同时,阿超为大家准备了丰富的学习资料,欢迎关注公众号“超哥学编程”,即可领取。

本文涉及工程代码,公众号回复:34AddMenu,即可下载。

《给QTreeView表项添加右键菜单》:系列教程之四相关推荐

  1. C#为listview选中的项添加右键菜单

    效果图: 实现步骤: 1.把ContextMenuStrip菜单控件拖放到设计界面上,Name属性设置为cmsListViewItem 2.在ContextMenuStrip控件的Items集合里添加 ...

  2. Windows10 为指定类型文件添加右键菜单项并传递文件名,点击后调用python脚本进行处理

    Windows10 为指定类型文件添加右键菜单项并传递文件名,点击后调用python脚本进行处理 需求举例: 在.torrent文件上点击右键时,右键菜单上显示 [更新文件名称],点击此项调用相应的p ...

  3. 通过注册表添加右键菜单选项

    通过注册表添加右键菜单选项,可以通过编写注册表文件实现,也可以直接在系统注册表中新建注册表. 以前一篇<使用 YUI Compressor 批量压缩JS/CSS>中的注册表为例. 一.通过 ...

  4. 非管理员用户添加右键菜单(管理员也适用)

    目录 背景 解决办法 总结:把其他教程中的HKEY_CLASSES_ROOT替换为HKEY_CURRENT_USER\SOFTWARE\Classes即可 背景 网上大多数教程添加右键菜单的方法都需要 ...

  5. win10:如何在注册表中操作右键菜单

    0.打开注册表, win-R(运行)=>regedit 1.在空白处添加右键菜单,并执行cmd命令 注册表路径:计算机\HKEY_CLASSES_ROOT\Directory\Backgroun ...

  6. 添加右键菜单:用xx打开(管理员身份下,也可以运行)【解决 ShellExecute failed (2): Is this command correct? 的问题】

    文章目录 吃水不忘挖井人系列 具体步骤 1.安装vscode:或者 Notepad++ 2.新建一个".reg"为后缀的文件: 3.把下面内容复制到文件中: 4.替换路径 5.[可 ...

  7. Notepad++ 添加右键菜单

    Notepad++ 添加右键菜单 Notepad++ 绿色版 右键菜单没有它,每次都要查找 notepad++.exe 来打开没关联的文件. 根据网上的一些方法,准备一个notepad.reg,导入注 ...

  8. 在(CListView)列表视图中添加右键菜单的方法

    使用弹出式菜单(PopMenu) 弹 出式菜单(PopMenu)大家都熟悉,在WIN98的桌面上单击鼠标右键弹出的菜单就是弹出式菜单.通常情况下,弹出式菜单在鼠标右键单击时弹出,当 然,也可以根据需要 ...

  9. ListCtrl添加右键菜单(ListCtrl类里编辑,给ListCtrl 发送NM_RCLICK消息)

    在开发中会用到右键菜单,我们来一起学习一下. 假如,我们现在已经准备好了列表,就差右键处理了. 1.在资源视图中的添加一个MENU,如图 2.给要添加右键菜单的ListCtrl子类,添加消息 按 ct ...

  10. merlin.acs的使用方法 merlin.acs添加右键菜单

    阅读全文:http://www.cckan.net/forum.php?mod=viewthread&tid=39 看看这个怎么样吧 直接看代码吧我就不多说了 1.先下载一下这个控件 吧 网上 ...

最新文章

  1. 有人竟然为了两千多的眼镜倒贴10亿???
  2. (CodeForces 548B 暴力) Mike and Fun
  3. bhjqahjshjhjgqwsoixcyuwyub
  4. VTK:PolyData之BooleanOperationPolyDataFilter
  5. 解决Mysql读写分离数据延迟
  6. kubelet配置cni插件_不到1分钟,从零完成k3s Kubeconfig配置
  7. Java之HSF搭建demo
  8. python打开伪终端_0xB:伪终端
  9. 兑现北京冬奥赞助承诺 奇安信安全防护软件冬奥版发布
  10. Paper:LSTM之父眼中的深度学习十年简史《The 2010s: Our Decade of Deep Learning / Outlook on the 2020s》的解读
  11. Matplotlib调整字体大小
  12. Linux汇编语言开发指南
  13. 成都互联网公司和生活成本
  14. Spring核心内容
  15. 学生专用计算机abs什么意思,出现abs标志什么意思
  16. 手机通讯录excel转换vcf
  17. 点击按钮1 打开/关闭按钮2
  18. 实战电商页面1:静态布局
  19. 点击网页中正常链接结果跳转到天猫淘宝的页面
  20. 存储例题:2048*1024的32位全彩图像……

热门文章

  1. 汽车电工及电子技术基础【2】
  2. 基于单片机的语音小车设计
  3. 车架号校验 php代码,VIN车辆识别代码查询(精准版)
  4. Python爬虫 糗百段子
  5. 富士施乐p355d_富士施乐p355d驱动下载
  6. 遭遇希捷硬盘“固件门”,经销商仅赔了新硬盘,原来硬盘中数据全部丢失,郁闷。。。...
  7. SQL Server 监视(Monitoring)体系架构
  8. 获取用户上传的图片的本地路径实现方法,解决fakepath路径问题
  9. visio软件接口流程图_Microsoft Office Visio绘制系统框图以及流程图的操作步骤
  10. PDF转CAD怎么弄?推荐两个转换方法