2009-10-08 5 views
2

QGraphicsView를 사용하여 자산 브라우저를 작성하고 싶습니다. QGraphicsView 및 QGraphicsItems를 사용하는 예제와 약간 다릅니다. 스크롤바 하나만 있으면되고 뷰포트 크기가 변경되면 항목이 자동으로 이동되기를 원하기 때문입니다. 뷰포트 폭 4 asssets을 표시 할만큼 큰 경우, 예를 들어, 이들은 다음과 같이 표시한다 : 뷰포트가 수축되고, 단지 3 열을 포함 할 경우자동 상품이있는 QGraphicsView

aaaa 
aaaa 
aa 

그러나, 그것은 다음과 같이이를 표시한다 :

aaa 
aaa 
aaa 
a 

나는 그 자산을 혼자서 옮기고 그래픽보기에서 모두 관리하도록하고 싶지 않습니다. 어떻게 든 가능합니까?

QWidget 및 paintEvent를 사용하여 모든 애셋을 직접 그려보고 행에 표시 할 수있는 애셋 수를 추적합니다. QGraphicsView로 더 간단하게 처리 할 수 ​​있습니까?

+0

"QGraphicsView with automatic"은 질문에 대해별로 말하지 않는 제목입니다. 그것을 바꾸는 것을 고려하십시오 ... – larsmoa

+0

고마워, 나는 제목을 끝내는 것을 잊어 버렸음에 틀림 없다. – gruszczy

답변

5

QGraphicsView는 레이아웃을 지원합니다. 당신이해야 할 일은 QGraphicsLayout으로부터 상속받은 자신의 레이아웃 매니저를 구현하는 것입니다.

필요한 레이아웃을 보려면 Qt의 플로우 레이아웃 예제를 살펴보십시오. 이 예제를 변환하면 QGraphicsFlowLayout을 얻을 수 있습니다. 이 레이아웃에 QGraphicsItems를 추가하고 QGraphicsView의 레이아웃을 해당 레이아웃으로 설정하면 그 트릭을 수행 할 수 있습니다.

+0

나는 확실히 이것을 살펴볼 것입니다. 고마워 :-) 몰랐는데 QGraphicsItems로 QGraphicsView의 레이아웃을 사용할 수 있다는 것을 알았습니다. – gruszczy

0

이렇게하려면 사용자 지정 레이아웃을 사용합니다. QGraphicsLayout에서 상속받은 사용자 지정 Layout 클래스를 만들어 항목 배치 방식을 관리하십시오.

1

그래픽보기가 아닌 목록을 원한다고 들립니다. 목록은 원하는대로 배치하는 것을 표시하도록 설정할 수 있습니다. 왼쪽의 퍼즐 조각 목록에주의를 기울여 puzzle example을 참조하십시오. 제시된 사례를 설정하는 것이 매우 간단 해 보입니다.

물론 그래픽보기에서 원한다면보기에 목록을 추가하고 거기에 사용할 수 있다고 가정합니다.

관련 문제