2013-06-10 2 views
1

QList를 모델로 사용하는 방법을 알 수 없습니다. 데이터 유형이 1 차원이지만 이와 같이 중첩 된 것을 본 적이없는 몇 가지 예가 있습니다. 아래 관련 코드 :QList <QVariantMap>을 QML ListView 모델로 사용하십시오.

MAIN.CPP - 여기가 내가 QList에게

viewer.rootContext()->setContextProperty("productlist", QVariant::fromValue(databaseController.listProjects())); 

main.qml 등록 - 여기 내가 경우 모델 '제품 목록'

ListView { 
    id: list_view 

    anchors.fill: parent 
    model: productlist 
    delegate: 
     Rectangle{ 
      height: 20 
      width: 200 
      color: "#CCCCCC" 
      Text { text: modelData.name } 
     } 
} 

참고, 사용하려는 I databaseController.listProjects() [0] 물론 첫 번째 QVariantMap을 얻을 수 있으며 예제가 작동하지만 값 및/또는 키를 반복하는 방법을 모르겠다.

내가 QtQuick 2.0

Qt는 5 사용하고 난 QAbstractListModel 대해 뭔가를 읽었지만 .. 나는 생각이 바른 길에 그것을 사용하거나 더 쉬운 방법이 방법을 알아낼 수 없습니다? 당신의 도움이

답변

4

당신이 읽기 전용 것 것을 알 필요가 있지만 QVariantList/QVariantMap가 CONST가의 쉽게) (값으로, ListView를위한 모델로 QVariantList을 사용할 수 있습니다에 대한

감사 :

QVariantList myModel; 
foreach (QVariantMap item, databaseController.listProjects()) { 
    myModel.append (item); 
} 

viewer.rootContext()->setContextProperty("productlist", QVariant::fromValue(myModel)); 

그리고 끝났어!

+0

QVariantlist는 QList 과 어떻게 동일합니까? (정품 질문, 나는 OP와 같은 문제가있다) –

+1

@ FélixCantournet : 사실 QVariantList는 QList 의 typedef이며 QVariant는 QVariantMap으로 투명하게 채워질 수 있으므로 QVariantMap을 QVariantList의 항목으로 제공 할 수있다. – TheBootroo

관련 문제