2017-10-20 2 views
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 
    } 
} 

내가 뭘 잘못하고 있니? 정렬 후에 뷰가 요소의 레이아웃을 업데이트하지 않는 이유는 무엇입니까?

답변

0

트리보기 항목을 위임해야한다고 생각합니다. 위임자에게 데이터가 제공됩니다. 모델과 QML보기 사이, 위임의 중요성을 이해하기 위해 아래 링크로 itemDelegate

TreeView 
{ 
    model: treeModel 

    itemDelegate: Item { 
     Text { 
       color: styleData.textColor 
       text: styleData.value 
      } 
    } 

    TableViewColumn 
    { 
     title: "Title" 
     role: "title" 
     width: 700 
    } 
} 

봐를 추가하여 아래와 같이

는 QML 트 리뷰을 변경해보십시오. 쉽게 설명 할 수있는 이미지가 있습니다.

http://doc.qt.io/qt-5/qtquick-modelviewsdata-modelview.html

위임은 - 데이터가보기에 표시하는 방법을 지시한다. 대리자는 모델의 각 데이터를 가져 와서 캡슐화합니다. 데이터는 대리인을 통해 액세스 할 수있는 입니다.

+0

답변 해 주셔서 감사합니다. 하지만 이것이 어떻게 도움이되는지 이해할 수는 없습니다. 문제는 TreeView가 모델의 신호에 응답하지 않는다는 것입니다. TreeView의 소스 코드를 읽은 후에 모델에서 layoutChanged 신호에 응답하는 함수를 찾지 못했습니다. 혼란스러워. –

+0

@ strelok.ndv이 링크를 살펴보면 이미지와 QML 뷰와 모델간에 의사 소통하는 데 대리인이 필요한지 확인할 수 있습니다. http://doc.qt.io/qt-5/qtquick-modelviewsdata-modelview.html – Naidu

+0

답변도 업데이트되었습니다. – Naidu

관련 문제