2015-09-10 50 views
0

運動項目我有Qt Quick的樹狀通過setContextProperty暴露它連接到我的化QAbstractItemModel和它工作得很好。 現在我希望能夠通過向上和向下拖動它們來更改項目的順序(在視圖和模型中)。我創建了DropArea在QML樹狀

DropArea { 
     anchors { fill: parent; margins: 10 } 

     onEntered: { 
      // ??? 
     } 
} 

但我不確定如何實現在qml中移動。在qwidget方法中,它由removeRows/insertRows處理。 qt快速正確的方法是什麼?

回答

0

正確的做法是使用該模型並移動項目,或將其移除/插入新位置。由於這些函數沒有直接暴露給QML,所以您將不得不通過包裝插槽公開它們,例如在您的模型中。

修改源模型時,視圖會自動調整以反映更改。

+0

我怎麼能得到以前和新的位置? – amplifier

+1

@amplifier - 您可以分別使用視圖的QModelIndex indexAt(int x,int y)'模型作爲您的拖動源和放置目標。 – dtech

+0

是「indexAt」獲得「from」和「to」指數的唯一方法嗎? – amplifier