데이터 트리를 인코딩하기 위해 QAbstractItemModel에서 파생되었지만 QTreeView가 표시되지 않습니다.QTreeView가 데이터를 표시하지 않습니다.
나는 때문에 잘못된 변수 수명의 해결 된 비슷한 질문에 본 답변의 대부분은, 그래서 여기에 모델의 할당에 대한 내 코드입니다 : 건설에
ui.tvHierarchy->setModel(
new MetaHierarchyModel(
cutOffExtension(
fileName.toStdString()
)
)
);
모델이 가득 루트 노드를 가져가 데이터에 저장하고 필요에 따라 더 많은 데이터를로드해야합니다 (fetchMore
통해).
나는 호출되는 모든 기능을 출력하기 시작했습니다. roleNames()
의
columnCount(QModelIndex(-1,-1,0x0,QObject(0x0)))
return 1
columnCount(QModelIndex(-1,-1,0x0,QObject(0x0)))
return 1
columnCount(QModelIndex(-1,-1,0x0,QObject(0x0)))
return 1
hasChildren(QModelIndex(-1,-1,0x0,QObject(0x0)))
return true
hasChildren(QModelIndex(-1,-1,0x0,QObject(0x0)))
return true
canFetchMore(QModelIndex(-1,-1,0x0,QObject(0x0))))
return false
rowCount(QModelIndex(-1,-1,0x0,QObject(0x0)))
return 1
index(0 , 0 , QModelIndex(-1,-1,0x0,QObject(0x0)))
return QModelIndex(0,0,0x987aa0,MetaHierarchyModel(0xa16970))
hasChildren(QModelIndex(0,0,0x987aa0,MetaHierarchyModel(0xa16970)) )
return true
columnCount(QModelIndex(-1,-1,0x0,QObject(0x0)))
return 1
parent(QModelIndex(0,0,0x987aa0,MetaHierarchyModel(0xa16970)) )
return QModelIndex(-1,-1,0x0,QObject(0x0))
index(0 , 0 , QModelIndex(-1,-1,0x0,QObject(0x0)))
return QModelIndex(0,0,0x987aa0,MetaHierarchyModel(0xa16970))
data(QModelIndex(0,0,0x987aa0,MetaHierarchyModel(0xa16970)) , 13)
return "Metaparticle 1"
columnCount(QModelIndex(-1,-1,0x0,QObject(0x0)))
return 1
parent(QModelIndex(0,0,0x987aa0,MetaHierarchyModel(0xa16970)) )
return QModelIndex(-1,-1,0x0,QObject(0x0))
index(0 , 0 , QModelIndex(-1,-1,0x0,QObject(0x0)))
return QModelIndex(0,0,0x987aa0,MetaHierarchyModel(0xa16970))
data(QModelIndex(0,0,0x987aa0,MetaHierarchyModel(0xa16970)) , 13)
return "Metaparticle 1"
출력 : (나는 내 인내심을 잃어 또는 적어도 때까지)
마지막 네 줄은 다음 영원히 반복QHash((0, "display")(1, "decoration")(2, "edit")(3, "toolTip")(4, "statusTip")(5, "whatsThis"))
이 호출 시퀀스의 로그입니다. 루트 데이터를 가져온 것처럼 보였지만 결코 표시되지 않습니다. 마지막 매개 변수 data
(int role
)의 값이 13이며,이 값은 역할로 정의되지 않습니다 (여전히 유효한 문자열을 무조건 돌려줍니다).
구현시 놓친 부분이 있습니까?
'data' 함수에서 값을 반환 할 때 가능한 한 인색하기를 원합니다. [the docs] (https://qt-project.org/doc/qt-4.8/qt.html#ItemDataRole-enum)를 체크하면, 역할 13이'Qt :: SizeHintRole'임을 알 수 있습니다. 문자열이 반환 될 때보기가 오히려 혼란스러워지고 있다고 상상해보십시오! –
@XavierHolt 네 말이 맞아. DisplayRole과'QVariant()'에서만 리턴 할 때 작동하지 않는 대신에 이것을 변경했습니다. 아마 나는 그때 또 다른 오류가 있었고 지금은이 문제를 줄곧 가지고있었습니다. 답변을 올리시겠습니까? 올바르게 표시 할 수 있습니까? – Nobody
좋아요! 기쁜 마음으로 - 잠시 후에 답변을 드리겠습니다. –