关于QT的QTreeWidgetItem的右键问题!
我有个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()); //在当前鼠标位置显示
}