2013-09-27 3 views
0

각각 다른 장면을 가진 3 개의 QGraphicsView가 있습니다. 사용자가 그 중 하나를 스크롤 할 때 모든보기를 스크롤하려고합니다. QGraphicsView :: scrollContentsBy를 호출하는 QGraphicsView 위젯에서 드래그하는 사용자가 스크롤을 수행합니다.하나를 스크롤 할 때 여러 QGraphicsView를 스크롤하는 방법 (스크롤 막대 없음)

내 첫 번째 구현 : 다른 모든보기에 대해 centerOn을 호출하지만 이로 인해 scrollContentsBy의 재귀 호출이 종료됩니다.

내 두 번째 구현 : 다른 모든보기에 대해 scroll을 호출하지만 뷰가 올바르게 업데이트되지 않습니다 (장면의 일부가 누락 됨). 그래도 올바르게 스크롤됩니다.

다른 버전을 사용해 보았지만 해결책을 찾을 수 없습니다. 어떤 아이디어라도 좋을 것입니다.

편집 : 나는 답을 발견하지만 난 내 자신의 질문 :

답변

0

내가 사실 난 내 자신의 질문에 대답하고 다른 사람들과 답을 공유 할 수 기쁘게 생각에 댓글을 올리려면 전에 3 시간 이상 기다려야합니다 . 당신이해야 할 유일한 일은 스크롤바 2 개 (세로 1 개와 가로 1 개)를 생성하고 모든 두 개의 스크롤바를 모든 QGraphicsView 인스턴스에 설정하는 것입니다. 사용자가 하나의 그림을 드래그하면 모든보기가 동일한 이벤트를 수신하고 각보기에 대해 scrollContentsBy가 호출됩니다. 쉽게 알 수 있습니다.

m_hScrollBar = 새로운 QScrollBar (Qt :: Horizontal);

m_vScrollBar = 새로운 QScrollBar (Qt :: Vertical);

m_srcView-> setHorizontalScrollBar (m_hScrollBar);

m_srcView-> setVerticalScrollBar (m_vScrollBar);

m_dstView-> setHorizontalScrollBar (m_hScrollBar);

m_dstView-> setVerticalScrollBar (m_vScrollBar);

m_diffView-> setHorizontalScrollBar (m_hScrollBar);

m_diffView-> setVerticalScrollBar (m_vScrollBar);