给QTreeWidget添加右键菜单功能
来源:互联网 发布:平野绫事件 知乎 编辑:程序博客网 时间:2024/05/21 10:39
第一种方法:
1、在包含有QTreeWidget的窗体中添加customContextMenuRequested的信号处理,同时要添加setContextMenuPolicy(Qt::CustomContextMenu)
2、为QTreeWidget添加节点,用SetData()函数来为每个节点赋予不同的键值。
如:
QTreeWidgetItem *root;
root = new QTreeWidgetItem(ui->treeWidget, QStringList(QString("treeItem1")));
QVariant var0(0);
root->setData(0, Qt::UserRole, var0);
3、在槽函数中h使用itemAt()函数获取当前被点击的QTreeWidget的节点,然后为不同的节点添加不两只的菜单
void MainWindow::on_customContextMenuRequested(const QPoint &pos)
{
QTreeWidgtItem *curItem = ui->treeWidget->itemAt(pos);
if (curItem == NULL) return;
QVariant var = curItem->data(0, Qt::UserRole);
if (var == 0) {
QMenu menu;
menu.addAction(ui->actionA);
menu.addAction(ui->actionB);
menu.exec(QCursor::pos());
}
}
if (!(QGuiApplication::mouseButtons() & Qt::RightButton)) return; if (item->type() == 1) ui.action_reportAdd->setEnabled(false); else { ui.action_reportAdd->setEnabled(true); ui.action_reportDel->setEnabled(true); } QMenu menu; menu.addAction(ui.action_reportAdd); menu.addAction(ui.action_reportDel); menu.exec(QCursor::pos());但是会出现这种情况,如果装载QTreeWidget的窗口的父窗口重写了右键菜单操作(即信号customContextMenuRequested(const QPoint & pos)),当鼠标在QTreeWidgetItem上右键操作时,会先弹出itemPressed对应的槽的菜单,接着会弹出窗口的父窗口的右键菜单,需要在QTreeWidget的窗口中重写信号customContextMenuRequested的槽函数,不作任何操作,将窗口的父窗口的customContextMenuRequested的处理过滤
- 给QTreeWidget添加右键菜单功能
- QTreeWidget 添加右键菜单
- QTreeWidget中添加右键菜单
- QTreeWidget右键菜单
- VC 给列表框添加【右键按键菜单】功能
- 给CListCtrl添加右键菜单
- 给CListCtrl添加右键菜单
- 给CListCtrl添加右键菜单
- 给DataGridView添加右键菜单
- 给DataGridView添加右键菜单
- 给CListCtrl添加右键菜单
- 给表格添加右键菜单
- flash添加右键菜单功能
- 表格添加右键菜单功能
- 给IE的右键菜单增加功能
- 如何给CTreeCtrl 添加右键菜单
- 给右键添加菜单(editplus)
- 如何给CTreeCtrl 添加右键菜单
- c# wpf
- Linux集群 原理
- 选择排序
- 挑战面试编程:十六进制数转化为八进制数
- 由CPU类型决定的几个特性(概念)
- 给QTreeWidget添加右键菜单功能
- Linux禁用显示“缓冲调整”
- mysql命令语句来去除掉字段中空格字符的方法
- 随笔记录:URL和URI的区别
- 读取通达信日线数据
- Linux程序设计(Linux shell编程十一)
- IOS持续的后台定位
- JAVA设计模式(二十)——备忘录模式
- Linux启动过程概述(X86)