• 12774阅读
  • 6回复

在QTreeWidget控件中如何实现右键菜单的准确定位?请求帮助! [复制链接]

上一主题 下一主题
离线penguinfish
 

只看楼主 倒序阅读 楼主  发表于: 2006-10-19
我想要实现在界面中的tree中准确定位,确定右键点击的tem。
    1. 点击空白处,不显示右键菜单;
    2. 点击childeitem时,不显示右键菜单;
    3. 只在点击toplevelitem时显示右键菜单。

    不知道如何才能有效实现,希望朋友们给以帮助!:)
[ 此贴被XChinux在2006-10-21 09:38重新编辑 ]
离线jing_zisu
只看该作者 1楼 发表于: 2006-12-15
 
[ 此贴被jing_zisu在2007-04-17 18:52重新编辑 ]
离线wangowen

只看该作者 2楼 发表于: 2006-12-15
肯定和context Menu有关,自己看看文档
离线hehui

只看该作者 3楼 发表于: 2007-04-16
看Assistant源码!
那里有!!!!!!
离线jing_zisu
只看该作者 4楼 发表于: 2007-04-17
还真是巧啊,前段时间我刚好就在折腾这个东西呢~~
其实你说那3个问题都是同一个问题
  在treewidget中实现右键菜单:从QTreeWidget继承一个类,在新类中重写contextMenuEvent(QContextMenuEvent *event)函数;你在创建每一个QTreewidgetItem的时候setData一下,比如你这里只分toplevelitem和childeitem,那么你可以这样:
1.创建toplevelitem
QVariant var(0);
pTopItem->setData(0, Qt::UserRole, var);
2.创建childItem
QVariant var1(1);
pChildItem->setData(0, Qt::UserRole, var1);

然后在contextMenuEvent函数中用QVariant QTreeWidgetItem::data ( int column, int role )取出进行判断就可以了。
离线aaniao999

只看该作者 5楼 发表于: 2007-04-20
setContextMenuPolicy()里面有个自己定义contentMenu的设置,这个设置成setContextMenuPolicy
然后就会zuto emit  customContextMenuRequested(Qpoint pos),这里可以检测pos,
但是考虑到每次检测的时候还要找topLevelItem的rect区域还要自己再找

对了,新办法,不用检测POS,直接检测QTreeView的currentIndex()就行了阿

感觉delegate也可以实现,但是只是感觉,我对delegate相当不熟,有熟悉的能来说下吗?谢谢了
离线rikjaves

只看该作者 6楼 发表于: 2010-03-04
可以使用MAPTO转换坐标
快速回复
限100 字节
 
上一个 下一个