关于QT的QTreeWidgetItem的右键问题!

zyl0425 2013-01-14 03:47:17
我有个QTreeWidget构件,里面有多个QTreeWidgetItem,构成多级菜单,
举个简单例子,如下:
客户信息
对私客户
对私客户建立
对公客户
对公客户建立
其中,只有最后一级才是有真正交易界面的选项,其它都是目录,也就是说只有对私客户建立和对公客户建立
才有界面。我现在要求右键点击“目录”项,也就是客户信息、对私客户、 对公客户这三个选项时,出现的
是一个右键菜单,点击对私客户建立和对公客户建立出现的是另一个右键菜单。
这个也已经实现了,具体的作法是:
我将QTreeWidget的itemPressed(QTreeWidgetItem*,int)和自己的一个slot--PopMouseMenu连接起来,
然后在PopMouseMenu里面根据item->childCount()个数来判断,如果是大于0证明是“目录”,调用ShowDirMenu();如果是0,则表示是对私客户建立或对公客户建立,从而调用ShowFileMenu()。
ShowDirMenu()和ShowFileMenu()是自己写的函数,然后分别到这个里面,实现右键菜单项,

void EidtMenu::ShowDirMenu(QTreeWidgetItem *item)
{
//创建Action
QAction AddTrade("&添加交易",this);
AddTrade.setIcon(QIcon("addtrade.png"));
connect(&AddTrade, SIGNAL(triggered()), this, SLOT(AddTrade_Dir()));

QPoint pos;
QMenu menu(ui.treeWidget);
menu.addAction(&AddTrade);
menu.exec(QCursor::pos()); //在当前鼠标位置显示
}

现在的问题就是如何在自定义的AddTrade_Dir()里面去知道我当前的QTreeWidgetItem啊?!
...全文
344 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jdwx 2013-01-14
  • 打赏
  • 举报
回复
QList<QTreeWidgetItem *> list = treewidget->selectedItems(); if(list.count()) { QTreeWidgetItem *item = list.first(); tree单选,list里就一个item }
引用 楼主 zyl0425 的回复:
我有个QTreeWidget构件,里面有多个QTreeWidgetItem,构成多级菜单, 举个简单例子,如下: 客户信息 对私客户 对私客户建立 对公客户 对公客户建立 其中,只有最后一级才是有真正交易界面的选项,其它都是目录,也就是说只有对私客户建立和对公客户建立 才有界面。我现在要求右键点击“目录”项,也就是客户信……
  • 打赏
  • 举报
回复
这个AddTrade_Dir()也是在这个类中,很简单的是 定义一个类成员函数QTreeWidgetItem *pItem;ShowDirMenu()中把item形参传给pItem,AddTrade_Dir()调用这个pItem;

16,199

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧