2011-04-01 85 views
2

我有一個擴展自QTreeView的類,它有一個從QAbstractItemModel擴展的數據模型,我想將一個項目拖到它上面。Qt拖放指示器位置

我的問題是這樣的,當我拖動時,我顯示拖動指示器,它顯示一個矩形放在物品上,或者在物品之間放置一條線。當我在我的數據模型中收到dropMimeData時,我看不到檢索這些數據的方法。我注意到QAbstractItemView上有一個dropIndicatorPosition,但它受到保護。所以我的問題是,我怎麼能知道dropMimeData是否在項目上,它之前或之後的項目?

回答

2

好吧,我找到了答案:

bool MyModel::dropMimeData(const QMimeData *data, Qt::DropAction action, 
        int row, int column, const QModelIndex &parent) 

如果(-1不parent.row(),parent.column()),那麼它被認爲對象上扔下QModelIndex是有效的父母和我來找出把它放在模型中的位置。

如果它無效,那麼行和列不是-1,並且我有一個無效的模型索引,並且該對象正在該位置插入。

這是在qt文檔「Using Drag and Drop with Item Views」 - 我只看到了一般的拖放文檔。

+0

標記你的anwser? – 0xbaadf00d 2011-04-04 05:35:02