• 12860阅读
  • 7回复

请问QTreeWidget中itemPressed(QTreeWidgetItem *, int))信号问题 [复制链接]

上一主题 下一主题
 
只看楼主 倒序阅读 楼主  发表于: 2009-10-11
QTreeWidget中itemPressed(QTreeWidgetItem *, int))这个信号是只适用于鼠标左键,还是左右键都能够产生信号啊?
我的代码是connect(this,SIGNAL(itemPressed(QTreeWidgetItem *, int)),this,SLOT(SlotItemClicked(QTreeWidgetItem *, int)));
void Tree::SlotItemClicked(QTreeWidgetItem *item, int column)
{
     if (qApp->mouseButtons() == Qt::LeftButton)
        {showMenu();     }
    if (qApp->mouseButtons() == Qt::RightButton)
        {showMenu();     }
}
当用左键点击item时,会调用showMenu(),但是用右键点击时就不会调用,调试时发现用鼠标右击时,
    if (qApp->mouseButtons() == Qt::RightButton)
     {       showMenu();      } 这两句根本就没有执行。
   不知道问题出现在哪里,热切盼望回复!!!
只看该作者 1楼 发表于: 2009-10-12
哪位大哥来解答一下啊,拜托了!
离线hiti_tony
只看该作者 2楼 发表于: 2009-10-12
你跟一下不就行了,如果右键能进入SlotItemClicked,那就说明触发了信号。
只看该作者 3楼 发表于: 2009-10-12
引用第2楼hiti_tony于2009-10-12 11:20发表的  :
你跟一下不就行了,如果右键能进入SlotItemClicked,那就说明触发了信号。

谢谢,右键进入不了SlotItemClicked,右键好像就没有触发这个函数,所以我觉得是不是itemPress只能是用左键才能触发呢?小弟初学,很多还不是很明白
离线soros
只看该作者 4楼 发表于: 2009-10-12
我想if判断应该用:
qApp->mouseButtons() & Qt::LeftButton
qApp->mouseButtons() & Qt::RightButton
离线soros
只看该作者 5楼 发表于: 2009-10-12
而且,如果你想显示右键菜单的话不应该用这个来判断啊;
更高级的提供上下文菜单方法是重新实现QWidget::contextMenuEvent()函数
只看该作者 6楼 发表于: 2009-10-12
引用第5楼soros于2009-10-12 16:55发表的  :
而且,如果你想显示右键菜单的话不应该用这个来判断啊;
更高级的提供上下文菜单方法是重新实现QWidget::contextMenuEvent()函数

谢谢了,你说的很对,不过contextMenuEvent()我也试了一下,而且比较简单,由于还不是很熟悉,发现无论在哪里点击右键都会弹出菜单,我想要的是鼠标点击QTreeWidget中的item时才出现菜单,而不是在哪儿点击都会出现,这个怎么实现啊?请指教
离线guhan010

只看该作者 7楼 发表于: 2009-10-12
可以触发的,你的判断有问题。
应该用逻辑与,测试是否存在该标志位,不应该用等于吧。
我测试了这个信号,都可以触发。
快速回复
限100 字节
 
上一个 下一个