0
我一直在試圖拖放qtreeview中的子樹。當我執行放置操作時,樹會正確地重新排序,並且底層模型會更新,但是,項目選擇會在後續操作中搞砸。我無法想出一個可靠的方法來強制QT適當地重新繪製選擇。請參見下面的屏幕截圖:qtreeview:子樹的拖放導致選擇不正確
之前:
相關視圖代碼:
void View::dropEvent(QDropEvent *evt)
{
QTreeView::dropEvent(evt);
QModelIndex start = indexAt(_drag_start);
QModelIndex end = indexAt(evt->pos());
_model->moveTo(start, end);
}
相關的模型
頂部節點拖動到節點2後代碼:
void Model::moveTo(QModelIndex& start, QModelIndex& end)
{
// ... omitted some error checking code to ensure start and end have the same parent
ModelData* a = (ModelData*) start.internalPointer();
ModelData* b = (ModelData*) end.internalPointer();
ModelData* list = (ModelData*) (parent(start).internalPointer());
int idxa = list->indexOf(a);
int idxb = list->indexOf(b);
// underneath this is QList<...>::moveTo
list->moveTo(idxa, idxb);
QModelIndex p = this->parent(start);
emit dataChanged(index(0, 0, p), index(rowCount(p)-1, 1, p));
}
有什麼建議嗎?謝謝!