2011-03-29 118 views
0

我有兩個QTreeViews並排,我想實現從一個表拖動一個項目到另一個表。然而,我想要做的事情是,當要刪除的項目到達目的地表格時,兩行將「爲其騰出空間」並分開,以確切地向用戶顯示該項目將被刪除的位置。有人可以指導我如何做到這一點,因爲我不知道從哪裏開始。 謝謝, 斯蒂芬Qt拖放動畫

回答

0

http://doc.trolltech.com/latest/dnd.html應該引導你幾乎任何你想做的事情拖放。

至於你的具體目標,你需要實現QWidget :: dragMoveEvent(QDragMoveEvent * event),每當鼠標在目標樹內移動時拖動一個項目就會調用它。然後用QDragMoveEvent :: pos()獲取遊標的位置。之後,在dragMoveEvent中,使用QTreeView :: indexAt(pos())獲取鼠標下的項目。現在,我不知道如何以平滑的動畫方式將項目分開,這將是理想的。但是你可以做的是(暫時)在列表中添加一個空白項目,這將具有幾乎相同的效果。然後實現QWidget :: dropEvent()來處理拖放事件,當發生這種情況時,刪除空白項並將拖動項插入到它所在的位置。