QgraphicsView- 마우스 및 키보드 스크롤을 비활성화하는 방법

StackOverflow https://stackoverflow.com/questions/925934

  •  06-09-2019
  •  | 
  •  

문제

내 응용 프로그램에는 pixmap이 추가 된 qgraphicsscene이 있으며 Scrollbars가있는 qgraphicsview에서 모두가 보입니다. 프로그램 창이 PixMap보다 작고 화살표 키를 누르거나 마우스 휠을 이동할 때 PixMap이 움직입니다.

PixMap이 창보다 크면 이벤트를 사용하지 않는 한 키보드 나 마우스로 이동하지 않도록 어떻게 비활성화합니까?

(대화식 속성을 False로 설정하려고했지만 작동하지 않았습니다)

도움이 되었습니까?

해결책

가장 쉬운 솔루션은 QgraphicsView의 FocusPolicy를 Nofocus로 설정 한 다음 모든 주요 이벤트를 기본 창에서 처리하는 것입니다.

ui->graphicsView->setFocusPolicy( Qt::NoFocus );

다른 팁

쉬운 방법은 사용하는 것이라고 생각합니다 QGraphicsView::setSceneRect() 보기가 시각화 될 수있는 영역을 설정합니다.

뷰를 설정하면 sceneRect() 보기 위젯의 실제 크기 (또는 약간 작은) 까지이 사각형 외부에서 스크롤하거나 팬을 스크롤하거나 팬을 스크롤하거나 팬을 스크롤 할 수 없습니다.

더 쉬운 방법이 있는지는 알지 못하지만 적당히 쉬운 방법은 QgraphicsView 클래스를 물려 받고 마우스 및 주요 프레스 이벤트를 무시하는 수업을 만드는 것입니다.

더 어려운 방법에는 위젯에 이벤트 필터를 설치하는 것이 포함됩니다.

제 생각에, 가장 어려운 무차별적인 솔루션은 일종의 신호를 통해 변화를 감지하고 그것을 어떻게 설정했는지 다시 설정하는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top