Qt 中Treewidget添加右键菜单
在Qt+VS2005下,使用slot函数customContextMenuRequested(QPointpos)实现Treewidget的右键菜单栏。
1、在ui编辑界面中,右击QTreeWidget--> Connect Signal-->选择customContextMenuRequested(QPoint),添加slot函数。
在属性设置中,将contextMenuPolicy属性要设置为:CustomContextMenu,这步不能忘记,否则右键无反应。
2、为Treewidget添加节点,通过setData()来为每个节点赋予不同的键值。
QTreeWidgetItem *root; root = new QTreeWidgetItem(ui->treeWidget, QStringList(QString("Connection"))); QVariant var0(0); root->setData(0,Qt::UserRole,var0);
3、在slot函数中使用itemAt()函数获取当前被点击的节点,然后为不同的节点添加不同的菜单。
void MainWindow::on_treeWidget_customContextMenuRequested(QPoint pos) {QTreeWidgetItem* curItem=ui->treeWidget->itemAt(pos); //获取当前被点击的节点if(curItem==NULL)return; //这种情况是右键的位置不在treeItem的范围内,即在空白位置右击QVariant var = curItem->data(0,Qt::UserRole);if(0 == var) //data(...)返回的data已经在之前建立节点时用setdata()设置好 {QMenu *popMenu =new QMenu(this);//定义一个右键弹出菜单 popMenu->addAction(ui->action_newDB);//往菜单内添加QAction 该action在前面用设计器定义了popMenu->addAction(ui->action_openDB);popMenu->addAction(ui->action_delDB);popMenu->exec(QCursor::pos());//弹出右键菜单,菜单位置为光标位置 }else{QMenu *popMenu =new QMenu(this);//定义一个右键弹出菜单 popMenu->addAction(ui->action_newTable);//往菜单内添加QAction 该action在前面用设计器定义了popMenu->addAction(ui->action_openTable);popMenu->addAction(ui->action_designTable);popMenu->exec(QCursor::pos());//弹出右键菜单,菜单位置为光标位置 } }
参考:http://blog.csdn.net/moxiaomomo/article/details/6542683
转载于:https://www.cnblogs.com/liuyunfeifei/archive/2012/12/07/2807654.html
Qt 中Treewidget添加右键菜单相关推荐
- Qt中实现窗口右键菜单
1.在Qt设计师中选中mainwindow,将contextMenuPolicy属性修改为CustomContextMenu. 2.在菜单中选编辑信号与槽,点击主窗口空白处.会弹出如下 3.选择cus ...
- 在(CListView)列表视图中添加右键菜单的方法
使用弹出式菜单(PopMenu) 弹 出式菜单(PopMenu)大家都熟悉,在WIN98的桌面上单击鼠标右键弹出的菜单就是弹出式菜单.通常情况下,弹出式菜单在鼠标右键单击时弹出,当 然,也可以根据需要 ...
- java 右键菜单_界面操作--添加右键菜单
[java]代码库package 添加右键菜单; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; impor ...
- ListCtrl添加右键菜单(ListCtrl类里编辑,给ListCtrl 发送NM_RCLICK消息)
在开发中会用到右键菜单,我们来一起学习一下. 假如,我们现在已经准备好了列表,就差右键处理了. 1.在资源视图中的添加一个MENU,如图 2.给要添加右键菜单的ListCtrl子类,添加消息 按 ct ...
- merlin.acs的使用方法 merlin.acs添加右键菜单
阅读全文:http://www.cckan.net/forum.php?mod=viewthread&tid=39 看看这个怎么样吧 直接看代码吧我就不多说了 1.先下载一下这个控件 吧 网上 ...
- vue怎么实现右键二级菜单_vue中如何自定义右键菜单详解
在所编辑的页面,需要添加右键菜单的元素,绑定contextmenu事件,如下: v-for="item in resourceList" :key="item.id&qu ...
- openlayer右键菜单_OpenLayers添加右键菜单
1. 首先修改 OpenLayers Events.js 定位到下面代码段,添加右键菜单事件: View Code OpenLayers.Events = OpenLayers.Class ...
- tkinter向文本框里加内容_给tkinter文本框添加右键菜单
给tkinter文本框添加右键菜单 需求:直接右键点击使用tkinter创建的文本框是不会弹出菜单的.我们需要实现右键点击tkinter框架下的Entry对象.Text对象后弹出右键菜单可复制.粘贴和 ...
- 非管理员用户添加右键菜单(管理员也适用)
目录 背景 解决办法 总结:把其他教程中的HKEY_CLASSES_ROOT替换为HKEY_CURRENT_USER\SOFTWARE\Classes即可 背景 网上大多数教程添加右键菜单的方法都需要 ...
最新文章
- 日志查看工具 linux,用 Logwatch 工具查看 Linux 系统 Log 日志
- vivo的android是什么手机图片,vivo iQOO配置好不好 vivo iQOO手机参数和外观图赏
- Boost:验证atomic <T>具有来自T的隐式转换构造函数
- MySQL双主io线程起不来_解决master and slave have equal MySQL server UUIDs导致Slave_IO_thread起不来问题...
- mysql中局部变量说法正确的是_mysql全局变量和局部变量
- 苹果七绕过基带激活2020_苹果漏洞,可跳过苹果激活锁
- 如何在SQL Server计算XX年第XX周是哪几天
- IBM推出世界最小电脑,应用区块链技术防偷骗!
- Recommended Browsers for Oracle E-Business Suite 11i/R12
- Java封装JSON数据
- RPLIDAR A2 Windows 下开发
- 去文字,如何用PS快速去除图片上的文字
- 回答阿里云实名认证常见问题
- 画地貌图matlab1
- 让你精力充沛的25个简单方法
- vue项目中使用Google Analytics (谷歌统计)
- 经济学论文素材之美国浮动汇率制度
- netflix app for android 使用记录
- 教你用Python拨打电话
- 【苹果推??iMessage群发设置内容参数】什么是苹果推信?什么是苹果推?什么是日历推
热门文章
- udf、utaf、udtf进出数量规律
- 计算质数通过分区(Partition)提高Spark的运行性能(转载+自己理解)
- Spark的三种伪分布式方式
- ./和bash的区别
- http://127.0.0.1:8000/accounts/login/总是重定向到http://127.0.0.1:8000/accounts/profile/并且报告404
- Difference of Deep linear/ no linear neural networks
- linux下面navicat调整字体
- No module named sipconfig
- 机器学习(二十)——EMD, LSA, HMM
- java 制作小游戏_如何用java制作小游戏