在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添加右键菜单相关推荐

  1. Qt中实现窗口右键菜单

    1.在Qt设计师中选中mainwindow,将contextMenuPolicy属性修改为CustomContextMenu. 2.在菜单中选编辑信号与槽,点击主窗口空白处.会弹出如下 3.选择cus ...

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

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

  3. java 右键菜单_界面操作--添加右键菜单

    [java]代码库package 添加右键菜单; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; impor ...

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

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

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

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

  6. vue怎么实现右键二级菜单_vue中如何自定义右键菜单详解

    在所编辑的页面,需要添加右键菜单的元素,绑定contextmenu事件,如下: v-for="item in resourceList" :key="item.id&qu ...

  7. openlayer右键菜单_OpenLayers添加右键菜单

    1.       首先修改 OpenLayers Events.js 定位到下面代码段,添加右键菜单事件: View Code OpenLayers.Events = OpenLayers.Class ...

  8. tkinter向文本框里加内容_给tkinter文本框添加右键菜单

    给tkinter文本框添加右键菜单 需求:直接右键点击使用tkinter创建的文本框是不会弹出菜单的.我们需要实现右键点击tkinter框架下的Entry对象.Text对象后弹出右键菜单可复制.粘贴和 ...

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

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

最新文章

  1. 日志查看工具 linux,用 Logwatch 工具查看 Linux 系统 Log 日志
  2. vivo的android是什么手机图片,vivo iQOO配置好不好 vivo iQOO手机参数和外观图赏
  3. Boost:验证atomic <T>具有来自T的隐式转换构造函数
  4. MySQL双主io线程起不来_解决master and slave have equal MySQL server UUIDs导致Slave_IO_thread起不来问题...
  5. mysql中局部变量说法正确的是_mysql全局变量和局部变量
  6. 苹果七绕过基带激活2020_苹果漏洞,可跳过苹果激活锁
  7. 如何在SQL Server计算XX年第XX周是哪几天
  8. IBM推出世界最小电脑,应用区块链技术防偷骗!
  9. Recommended Browsers for Oracle E-Business Suite 11i/R12
  10. Java封装JSON数据
  11. RPLIDAR A2 Windows 下开发
  12. 去文字,如何用PS快速去除图片上的文字
  13. 回答阿里云实名认证常见问题
  14. 画地貌图matlab1
  15. 让你精力充沛的25个简单方法
  16. vue项目中使用Google Analytics (谷歌统计)
  17. 经济学论文素材之美国浮动汇率制度
  18. netflix app for android 使用记录
  19. 教你用Python拨打电话
  20. 【苹果推??iMessage群发设置内容参数】什么是苹果推信?什么是苹果推?什么是日历推

热门文章

  1. udf、utaf、udtf进出数量规律
  2. 计算质数通过分区(Partition)提高Spark的运行性能(转载+自己理解)
  3. Spark的三种伪分布式方式
  4. ./和bash的区别
  5. http://127.0.0.1:8000/accounts/login/总是重定向到http://127.0.0.1:8000/accounts/profile/并且报告404
  6. Difference of Deep linear/ no linear neural networks
  7. linux下面navicat调整字体
  8. No module named sipconfig
  9. 机器学习(二十)——EMD, LSA, HMM
  10. java 制作小游戏_如何用java制作小游戏