2013-11-28 6 views
1

QAbstractItemModel을 사용하여 일부 데이터를 저장하고 QTreeView을 사용하여 정보를 표시합니다. 확장 화살표를 첫 번째 열에 배치하는 대신 두 번째 열로 이동하려고 시도했지만 운이 좋지 않았습니다. QTableView을 사용하여 성공없이 각 열의 동작을 정의 할 수 있는지 확인하려고했습니다. 어떤 아이디어? 이전QTreeView에서 확장 화살표가 표시되는 열 변경

나는 TreeView을 표시 pygtk를 사용하고, 당신이 할 수있는 기본 '보기'가없는 TreeView.set_expander_arrow()

+0

'set_expander_column()'을 반드시 사용해야한다고 가정합니다. 그러나 pygtk에 익숙하지 않은 사용자를 위해이 기능이 무엇을하는지 명확하게 설명 할 수 있습니까? (그리고/또는 스크린 샷을 제공합니까?) – ekhumoro

+0

PyGTK 함수는 확장 아이콘을 배치 할 트리 뷰의 열을 지정합니다 (자식 표시/숨기기를 나타내는 + 기호). –

답변

0

Qt는라는 확장 화살표를 할 열을 정의 할 수있는 쉬운 방법이 확장 기호가있는 열을 지정해야합니다. 그러나 QTreeView의 서브 클래 싱을 조금만하면 원하는 것을 얻을 수 있습니다.

이 답변 당신은 당신이 원하는 심볼을 그린 후 클릭 한 영역이 그려 기호 중 하나를 초과하면 될 것입니다 (찾아 thismouseReleaseEvent을 덮어 쓸 수 있도록) 모든 항목의 왼쪽에 무언가를 그리는 방법을 here 세부 사항 도움)

미안하지만 그 이상의 도움이 될 수는 없지만 원하는 동작을 구현하는 것은 상당히 큰 작업입니다! (저는 현재 GTK 프로젝트를 Qt로 포팅하고 있습니다. 그래서 어떤 점에서 이것을 구현해야 할 수도 있습니다. 내가한다면, 여기에서 다시 확인하고 코드를 게시 할 것입니다!)

1

이것은 쉽게 할 수 있습니다. 그러나 QTreeView은 항상 모델 열 0 옆에 확장 아이콘을 표시하기 때문에 그 방법을 알 수는 없습니다. 그러나 뷰에서 모델 열이 표시되는 순서를 변경하면 팽창기 아이콘이있는 모델 열 0이 가장 왼쪽에있을 필요가 없습니다. 당신이 에 표시 할 데이터를 넣어

이 단지 다른 인 모델 1 열 및 모델의 열을 0으로 있는 확장 아이콘 오른쪽에 표시 할 데이터로 확장 아이콘 왼쪽 평소처럼 기대되는대로. 그런 다음 트리를 채운 후 tree->header()->moveSection(1,0)을 호출하여 열 1을 열 0의 왼쪽으로 이동하십시오.

Qt 메일 링리스트에이 솔루션을 게시 한 Michael Durland의 크레딧.