在TreeView中增加右键菜单功能
来源:互联网 发布:淘宝刷买家秀平台 编辑:程序博客网 时间:2024/04/30 16:53
实现代码如下:
//头文件中申明; QMenu *m_grpMenu; QMenu *m_memberMenu; QMenu *m_addAreaMenu; QAction *m_grpAddOneMember; QAction *m_grpDeleteGrp; QAction *m_grpAddOneGrp; QAction *m_memberDelete; QAction *m_memberMove; QAction *m_memberSyncTime; QAction *m_addAreaAction; QAction *m_grpFlush; QAction *m_addDev; void createItemMenu(); void createConnection();//构造函数调用:createItemMenu();createConnection();
void frmMain::createItemMenu(){ m_grpMenu = new QMenu(this); m_memberMenu = new QMenu(this); m_addAreaMenu = new QMenu(this); connect(m_grpMenu,SIGNAL(triggered(QAction *)), this,SLOT(onGrpMenuTriggered(QAction *))); connect(m_memberMenu,SIGNAL(triggered(QAction *)), this,SLOT(onMemberMenuTriggered(QAction *))); connect(m_addAreaMenu,SIGNAL(triggered(QAction *)), this,SLOT(onAddAreaMenuTriggered(QAction *))); m_grpAddOneMember = new QAction(tr("增加子区域"),this); m_grpAddOneMember->setIcon(QIcon(":/image/add.png"));; m_grpDeleteGrp = new QAction(tr("删除区域"),this); m_grpDeleteGrp->setIcon(QIcon(":/image/delete.png"));; m_grpAddOneGrp = new QAction(tr("增加设备"),this); m_grpAddOneGrp->setIcon(QIcon(":/image/add.png"));; m_memberDelete = new QAction(tr("删除设备"),this); m_memberDelete->setIcon(QIcon(":/image/delete.png"));; m_memberMove = new QAction(tr("移动设备"),this); m_memberMove->setIcon(QIcon(":/image/next.png"));; m_memberSyncTime = new QAction(tr("同步时间"),this); m_memberSyncTime->setIcon(QIcon(":/image/move.png"));; m_addAreaAction = new QAction(tr("增加区域"),this); m_addAreaAction->setIcon(QIcon(":/image/add.png"));; m_addDev = new QAction(tr("增加设备"),this); m_addDev->setIcon(QIcon(":/image/add.png")); m_grpFlush = new QAction(tr("刷新列表"),this); m_grpFlush->setIcon(QIcon(":/image/update.png"));;}void frmMain::createConnection(){ connect(ui->treeView,SIGNAL(customContextMenuRequested(const QPoint&)), this,SLOT(onCustomContextMenuRequested(const QPoint&)));}void frmMain::onCustomContextMenuRequested(const QPoint &pos){ QModelIndex idx = ui->treeView->indexAt(pos); QPoint tmpPos; tmpPos.setX(pos.x()); tmpPos.setY(pos.y() + 25); QString tmpFilePath = model->filePath(idx);// if (!idx.isValid()) if(tmpFilePath.count() == 0) { currentFilePath.clear(); currentFilePath.append("./"); if (m_addAreaMenu->isEmpty()) { //增加区域 m_addAreaMenu->addAction(m_addAreaAction); m_addAreaMenu->addAction(m_addDev); m_addAreaMenu->addAction(m_grpFlush); } m_addAreaMenu->popup(ui->treeView->mapToGlobal(tmpPos)); } else if(QString(tmpFilePath.at(tmpFilePath.count()-1)) == "】") { if (m_grpMenu->isEmpty()) { //增加子区域 m_grpMenu->addAction(m_grpAddOneMember); //删除区域 m_grpMenu->addAction(m_grpDeleteGrp); m_grpMenu->addAction(m_grpAddOneGrp); } m_grpMenu->popup(ui->treeView->mapToGlobal(tmpPos)); } else { if (m_memberMenu->isEmpty()) { //删除设备 m_memberMenu->addAction(m_memberDelete); //移动设备 m_memberMenu->addAction(m_memberMove); //同步时间 m_memberMenu->addAction(m_memberSyncTime); } m_memberMenu->popup(ui->treeView->mapToGlobal(tmpPos)); }}void frmMain::onGrpMenuTriggered(QAction *action){ if (action == m_grpAddOneMember) {//增加子区域 } else if (action == m_grpDeleteGrp) {//删除区域 } else if(action == m_grpAddOneGrp) { //在区域下增加设备 }}void frmMain::onMemberMenuTriggered(QAction *action){ if (action == m_memberDelete) {//删除设备 } else if(action == m_memberMove) {//移动设备 } else if(action == m_memberSyncTime) {//同步时间 }}void frmMain::onAddAreaMenuTriggered(QAction *action){ if (action == m_addAreaAction) {//增加区域 } if(action == m_addDev) {//增加设备 } if(action == m_grpFlush) {//增加设备 }}
0 0
- 在TreeView中增加右键菜单功能
- [转] QT 在TreeView中增加右键菜单功能
- [转] 在TreeWidget中增加右键菜单功能
- 如何在右键中增加菜单
- 给XP的右键菜单增加“在命令行中打开这里……”功能
- 在Win7右键菜单中增加"移动到"和"复制到"的功能,提高工作效率
- 在TreeWidget中增加右键菜单功能 以及TreeWidget的基本用法
- 在 Windows 的右键菜单中增加选项
- 在右键菜单中增加新建条目的方法
- 在(CListView)列表视图中增加右键菜单
- 在explorer中增加右键菜单打开命令行
- 在资源管理器中增加beyond compare 3 的右键菜单
- 在操作系统的右键菜单项中增加项
- 在ubuntu右键菜单中增加新建文件类型
- 在我的电脑右键中增加设备管理器菜单
- 给IE的右键菜单增加功能
- 为右键菜单增加dos命令行功能
- Qt中TreeView的右键菜单实现
- 一次性向mysql数据库中插入6000条数据 测试代码
- 坐标求三角形类
- (一)Openstack系列之 如何修改 并且调试 观察效果
- VS工程配置输出debug版dll及copy到指定目录,执行bat脚本的方法
- 【OFBiz】通过jquery的Ajax获取json数据
- 在TreeView中增加右键菜单功能
- Android 资源文件中@、@android:type、@*、?、@+含义和区别
- DownloadManager
- Atlas源码剖析(八)
- android:layout_gravity和android:gravity的区别
- 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?
- 第四周作业——图的表示
- 一步步学习微软InfoPath2010和SP2010--第十章节--与SharePoint Designer工作流的InfoPath集成(4)--工作流任务表单
- jpa+spring配置多数据源