Qt拖放动画

时间:2011-03-29 09:27:29

标签: qt

我有两个QTreeView并排,我想实现将一个项目从一个表拖到另一个表中。然而,我想要做的是,当要删除的项目到达目标表时,这两行排序为“为它腾出空间”并分开以真正向用户显示项目将被丢弃的确切位置。有人能指出我正确的方向,因为我不知道从哪里开始。 谢谢, 斯蒂芬

1 个答案:

答案 0 :(得分:0)

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

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

相关问题