0
QTreeView에서 잘 작동하는 모델이 있습니다.QML TreeView는 모델에서 방출 된 layoutChanged 신호를 지원합니까?
void SimpleTreeModel::sort(Node* sortedNode)
{
emit layoutAboutToBeChanged(QList<QPersistentModelIndex>(), VerticalSortHint);
QModelIndexList oldIndices = persistentIndexList();
Node::SortType sortType = Node::Down;
//sort starting node
sortedNode->sortChildren(sortType);
QModelIndexList newIndices;
newIndices.reserve(oldIndices.size());
for(const auto &i : oldIndices)
{
Node* node = const_cast<Node*>(nodeFromIndex(i));
QModelIndex index = indexFromNode(node);
newIndices.push_back(index);
}
changePersistentIndexList(oldIndices, newIndices);
QModelIndex startingIndex = indexFromNode(sortedNode);
emit layoutChanged({ QPersistentModelIndex(startingIndex) }, VerticalSortHint);
}
나는이 함수를 호출 할 때, QTreeView보기를 업데이트하지만 QML에서 트 리뷰 이렇게하지 : 모델에서 I는 다음과 같습니다 정렬을 구현했습니다. QML TreeView 사용 현황 :
TreeView
{
model: treeModel
TableViewColumn
{
title: "Title"
role: "title"
width: 700
}
}
내가 뭘 잘못하고 있니? 정렬 후에 뷰가 요소의 레이아웃을 업데이트하지 않는 이유는 무엇입니까?
답변 해 주셔서 감사합니다. 하지만 이것이 어떻게 도움이되는지 이해할 수는 없습니다. 문제는 TreeView가 모델의 신호에 응답하지 않는다는 것입니다. TreeView의 소스 코드를 읽은 후에 모델에서 layoutChanged 신호에 응답하는 함수를 찾지 못했습니다. 혼란스러워. –
@ strelok.ndv이 링크를 살펴보면 이미지와 QML 뷰와 모델간에 의사 소통하는 데 대리인이 필요한지 확인할 수 있습니다. http://doc.qt.io/qt-5/qtquick-modelviewsdata-modelview.html – Naidu
답변도 업데이트되었습니다. – Naidu