2011-03-29 120 views
0

我有两个QTreeViews并排,我想实现从一个表拖动一个项目到另一个表。然而,我想要做的事情是,当要删除的项目到达目的地表格时,两行将“为其腾出空间”并分开,以确切地向用户显示该项目将被删除的位置。有人可以指导我如何做到这一点,因为我不知道从哪里开始。 谢谢, 斯蒂芬Qt拖放动画

回答

0

http://doc.trolltech.com/latest/dnd.html应该引导你几乎任何你想做的事情拖放。

至于你的具体目标,你需要实现QWidget :: dragMoveEvent(QDragMoveEvent * event),每当鼠标在目标树内移动时拖动一个项目就会调用它。然后用QDragMoveEvent :: pos()获取游标的位置。之后,在dragMoveEvent中,使用QTreeView :: indexAt(pos())获取鼠标下的项目。现在,我不知道如何以平滑的动画方式将项目分开,这将是理想的。但是你可以做的是(暂时)在列表中添加一个空白项目,这将具有几乎相同的效果。然后实现QWidget :: dropEvent()来处理拖放事件,当发生这种情况时,删除空白项并将拖动项插入到它所在的位置。