테이블의 특정 행과 열만 표시하는 사용자 지정 QSortFilterProxyModel이 있습니다. 또한 테이블의 특정 값이 그려지는 방식을 제어하는 사용자 지정 QItemDelegate가 있습니다. 나는 그것을 필요로하는 열에 대해서만 델리게이트를 적용 할 것이고, 그 문제는 내가 프록시 모델로 특정 열을 숨겨서 델리게이트를 망칠 수있는 것 같다. 예를 들어QSortFilterProxyModel과 함께 사용자 지정 QItemDelegate 사용
, 나는 AG 열이 있다고 가정하고 내가
A B C D E F G
-------------------
o o o o o X o
o o o o o X o
o o o o o X o
내 프록시 모델은 열 B를 표시하지 않는 경우 F.
열을 내 사용자 지정 대리자를 적용, 내 대리인이 대신 열 G에 적용하기 끝 .A C D E F G
----------------
o o o o o X
o o o o o X
o o o o o X
나는
table->setColumnHidden(B, true);
를 호출하여보기에 열을 숨겨 대신 프록시 모델의 문제를 해결 할 수있었습니다 그리고 나는 가정이 작동하지만 유일한 그 해결책? 대리점 모델과 프록시 모델 클래스가 함께 작동하지 않는 버그처럼 보입니다. 같은 모델에서 둘 중 하나만 사용할 수있는 것처럼 잘 처리됩니다.
내가 아는 한 예상대로 작동하고 있습니다 : 항목 대리자는 모델에 대해 불가지론적인 것으로 간주되는보기의 열에 적용됩니다. 또한 모델 *은 프록시 모델이므로 정확한 열에 적용됩니다. – cbuchart
당신이 옳다고 생각합니다 @cbuchart. 뷰의 setItemDelegateForColumn을 호출하면 모델의 뷰가 아닌 뷰의 열이 될 것입니다. 열 번호를 변경할 수있는 프록시 모델을 사용하고 있다면 아래의 제안 된 대답이 유효한 해결 방법이라고 생각합니다. – Moohasha
qobject_cast를 수행하여 모델이 프록시 모델인지 확인할 수 있습니다. – cbuchart