首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

关于QT的QTreeWidgetItem的右键有关问题

2013-02-17 
关于QT的QTreeWidgetItem的右键问题!我有个QTreeWidget构件,里面有多个QTreeWidgetItem,构成多级菜单,举个

关于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());  //在当前鼠标位置显示
}

现在的问题就是如何在自定义的AddTrade_Dir()里面去知道我当前的QTreeWidgetItem啊?!
[解决办法]
这个AddTrade_Dir()也是在这个类中,很简单的是 定义一个类成员函数QTreeWidgetItem *pItem;ShowDirMenu()中把item形参传给pItem,AddTrade_Dir()调用这个pItem;
[解决办法]
QList<QTreeWidgetItem *> list = treewidget->selectedItems();
if(list.count())
{
    QTreeWidgetItem *item = list.first();
    tree单选,list里就一个item
}

引用:
我有个QTreeWidget构件,里面有多个QTreeWidgetItem,构成多级菜单,
举个简单例子,如下:
客户信息
   对私客户
      对私客户建立
   对公客户
      对公客户建立
其中,只有最后一级才是有真正交易界面的选项,其它都是目录,也就是说只有对私客户建立和对公客户建立
才有界面。我现在要求右键点击“目录”项,也就是客户信……

热点排行