• 6446阅读
  • 9回复

何在QGraphicsView中实现从其它窗口中拖拽 [复制链接]

上一主题 下一主题
离线weihua1984
 

只看楼主 倒序阅读 楼主  发表于: 2011-09-24
我已在QGraphicsVews中设置了setAcceptDrops(true);同时在dragEnterEvent事件中event->acceptProposedAction();
在运行时发现:当把拖拽的图标放到QGraphicsVews上时,显示的还是不可拖拽的形状,但dragEnterEvent可以触发。但后面的dropEvent就不能触发了。
离线wxj120bw

只看该作者 1楼 发表于: 2011-09-25
回 楼主(weihua1984) 的帖子
问题解决了没有 没有贴下构造函数、dragEnterEvent函数和dropEvent函数看看
离线weihua1984

只看该作者 2楼 发表于: 2011-09-25
但从拖拽上说还是没有,跟踪时view的dragEnterEvent有,但是dragmoveevent和dropevent都没有进去,好像被忽略了,场景中也就在mouseMoveEvent在拖拽释放时有反应,
根据这两点讲究把问题解决了,
具体还是不清楚,带高人指点

至于你说的几个函数没有特殊之处,接收拖拽的属性也设置了,

void GraphicsView::dragEnterEvent(QDragEnterEvent *event)
{
    if(event->source() != this)
    {
       QByteArray itemData = event->mimeData()->data("application/x-dnditemdata");
       QDataStream dataStream(&itemData,QIODevice::ReadOnly);
       dataStream >> this->m_strMark;
       event->acceptProposedAction();
    }
    else{
        event->ignore();
    }
}

别的应该没有疏忽了地方吧
离线wxj120bw

只看该作者 3楼 发表于: 2011-09-26
回 2楼(weihua1984) 的帖子
你最后是通过dragEnterEvent,dragmoveevent或dropevent函数实现的吗
离线weihua1984

只看该作者 4楼 发表于: 2011-09-26
不是啊
你有高招?
离线wxj120bw

只看该作者 5楼 发表于: 2011-09-27
回 4楼(weihua1984) 的帖子
高招谈不上 只不过是探讨   我用QMainWindow可通过我说的函数实现拖拽
离线weihua1984

只看该作者 6楼 发表于: 2011-09-27
是,我开始是使用qtreewidget 开始拖拽,qwidget接收拖拽也没有问题
只是view的拖拽和widget拖拽不太一样,view的拖拽会传递给场景
外来的拖拽好象被场景忽略了,具体研究不深
离线weihua1984

只看该作者 7楼 发表于: 2011-09-27
离线wxj120bw

只看该作者 8楼 发表于: 2011-09-27
回 7楼(weihua1984) 的帖子
  谢谢分享
离线qlearner
只看该作者 9楼 发表于: 2012-04-16
新学QT,哪位大哥能给我讲解一下QGraphicsView中拖放功能的实现,方便的话加我QQ1371381333,谢谢了。。。
快速回复
限100 字节
 
上一个 下一个