• 6331阅读
  • 6回复

[提问]treewidget双击item获取item信息出现的问题!大牛请现身!!!! [复制链接]

上一主题 下一主题
离线aishang
 
只看楼主 倒序阅读 楼主  发表于: 2011-03-24
connect(tree,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this,SLOT(MyitemDouble(QTreeWidgetItem*,int)));

void MainWindow::MyitemDouble(QTreeWidgetItem *Tag_N1,int col)
{
     Tag_Action = new QMenu(this);
     ettings = new QAction(tr("Reader Settings and Diagnostics"),this);
     Register = new QAction(tr("Register Map"),this);
     Tag_Action->addAction(Settings);
     connect(Settings, SIGNAL(triggered()),this, SLOT(goToSettings()));
     Tag_Action->addAction(Register);
     Tag_Action->exec(QCursor::pos());
     qDebug()<< col << "good "<< Tag_N1->text(0).toAscii();
}双击某个item以后会出现这个菜单,但是问题是这个菜单出现以后鼠标只要在任何地方点击一下就会弹出这个菜单!!!求原因!!!!!!!!!
离线wxj120bw

只看该作者 1楼 发表于: 2011-03-24
引用楼主aishang于2011-03-24 16:37发表的 treewidget双击item获取item信息出现的问题!大牛请现身!!!! :
connect(tree,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this,SLOT(MyitemDouble(QTreeWidgetItem*,int)));
void MainWindow::MyitemDouble(QTreeWidgetItem *Tag_N1,int col)
{
     Tag_Action = new QMenu(this);
.......

Tag_Action->exec(QCursor::pos());函数exec函数进入菜单的事件循环中,可以当从exec函数退出释放Tag_Action指针对象
离线aishang
只看该作者 2楼 发表于: 2011-03-25
回 1楼(wxj120bw) 的帖子
第一个界面出现以后相应的菜单是释放了。可是接下来就是只要鼠标在当前界面点击一下就会弹出这个菜单。也就是说单击会触发那个双击的信号!不知道为什么?
离线wxj120bw

只看该作者 3楼 发表于: 2011-03-25
第一次从菜单退出后,就delete掉,或者你把菜单声明成局部变量,试试 还有你检查下mouseReleaseEvent或者mousePressEvent函数有没有对菜单进行处理
离线aishang
只看该作者 4楼 发表于: 2011-03-25
回 3楼(wxj120bw) 的帖子
你说的前面两个我都试过了,不行!后面检查那个不明白如何做。
//void Tree::mouseDoubleClickEvent(QMouseEvent *e)
//{
//    //QItemSelection *selection = new QItemSelection();
//    if(ReaderName->text(0)== "AA-AA-AA-00-01")
//    {
//        if(!itemAt(mapFromGlobal(QCursor::pos())))
//        {
//            Tag_Action = new QMenu(this);
//            Settings = new QAction(tr("Reader Settings and Diagnostics"),this);
//            Register = new QAction(tr("Register Map"),this);
//            Tag_Action->addAction(Settings);
//            connect(Settings, SIGNAL(triggered()),this, SLOT(goToSettings()));
//            Tag_Action->addAction(Register);
//            Tag_Action->exec(QCursor::pos());
//         }
我开始用的是这个,菜单是正常的。换成双击以后就不消失,关键是双击一次以后只要在当前界面点击就出菜单。。。有个朋友说是双击事件里面含有单击事件。。。也不明白是什么。。。
离线wxj120bw

只看该作者 5楼 发表于: 2011-03-25
Re:回 3楼(wxj120bw) 的帖子
引用第4楼aishang于2011-03-25 11:04发表的 回 3楼(wxj120bw) 的帖子 :
你说的前面两个我都试过了,不行!后面检查那个不明白如何做。
//void Tree::mouseDoubleClickEvent(QMouseEvent *e)
//{
//    //QItemSelection *selection = new QItemSelection();
//    if(ReaderName->text(0)== "AA-AA-AA-00-01")
.......

双击是双击 单击就是单击 如果程序小 贴出来看看 我自己亲自操作 也没有出现楼主的情况
[ 此帖被wxj120bw在2011-03-25 22:24重新编辑 ]
离线aishang
只看该作者 6楼 发表于: 2011-03-29
回 5楼(wxj120bw) 的帖子
问题搞定了。是connect(tree,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this,SLOT(MyitemDouble(QTreeWidgetItem*,int)));
这句没方队地方。谢谢大家支持!
快速回复
限100 字节
 
上一个 下一个