QgraphicsView- 마우스 및 키보드 스크롤을 비활성화하는 방법
-
06-09-2019 - |
문제
내 응용 프로그램에는 pixmap이 추가 된 qgraphicsscene이 있으며 Scrollbars가있는 qgraphicsview에서 모두가 보입니다. 프로그램 창이 PixMap보다 작고 화살표 키를 누르거나 마우스 휠을 이동할 때 PixMap이 움직입니다.
PixMap이 창보다 크면 이벤트를 사용하지 않는 한 키보드 나 마우스로 이동하지 않도록 어떻게 비활성화합니까?
(대화식 속성을 False로 설정하려고했지만 작동하지 않았습니다)
해결책
가장 쉬운 솔루션은 QgraphicsView의 FocusPolicy를 Nofocus로 설정 한 다음 모든 주요 이벤트를 기본 창에서 처리하는 것입니다.
ui->graphicsView->setFocusPolicy( Qt::NoFocus );
다른 팁
쉬운 방법은 사용하는 것이라고 생각합니다 QGraphicsView::setSceneRect()
보기가 시각화 될 수있는 영역을 설정합니다.
뷰를 설정하면 sceneRect()
보기 위젯의 실제 크기 (또는 약간 작은) 까지이 사각형 외부에서 스크롤하거나 팬을 스크롤하거나 팬을 스크롤하거나 팬을 스크롤 할 수 없습니다.
더 쉬운 방법이 있는지는 알지 못하지만 적당히 쉬운 방법은 QgraphicsView 클래스를 물려 받고 마우스 및 주요 프레스 이벤트를 무시하는 수업을 만드는 것입니다.
더 어려운 방법에는 위젯에 이벤트 필터를 설치하는 것이 포함됩니다.
제 생각에, 가장 어려운 무차별적인 솔루션은 일종의 신호를 통해 변화를 감지하고 그것을 어떻게 설정했는지 다시 설정하는 것입니다.
제휴하지 않습니다 StackOverflow