2013-10-14 3 views
0

Qt 프로그래밍을 처음 사용하고 있으며 드로잉 응용 프로그램을 개발 중입니다. QGraphicsView 멤버가있는 MyWidget 클래스가 있습니다. MyWidget은 다른 클래스 인 MainWidget의 멤버입니다. (다른 위젯도 있고 레이아웃에 모두 있습니다.) MainWidget은 QMainWindow의 서브 클래스의 중앙 위젯입니다.레이아웃에있는 QGraphicsView의 크기를 얻는 방법은 무엇입니까?

마우스 휠 이벤트 및 장면을 드래그하는 기능을 사용하여 뷰의 크기를 조정하는 기능을 만들었습니다.

문제는 - 장면의 크기를 고정시키고보기의 크기를 3 배로 설정하고 싶지만 가능한 한 많은 공간을 차지하기 위해보기가 레이아웃에 의해 관리되므로 보기의 크기를 얻지 못합니까?

도움을 주시면 감사하겠습니다. 당신이를 QGraphicsView를 서브 클래스 수, 또는

http://qt-project.org/doc/qt-4.8/qwidget.html#size-prop

resizeEvent 다시 구현 :

답변

0

size 속성은 당신에게 당신의 위젯의 현재 크기를 줄 것이다

http://qt-project.org/doc/qt-4.8/qwidget.html#resizeEvent

을 전체 예제를 보려면 다음을 살펴보십시오.

http://qt-project.org/doc/qt-4.8/widgets-scribble.html

+0

@Hurzelchen. 크기 함수는 나를 도왔고 QGraphicsView를 하위 클래스 화하지 않고 원하는 것을 할 수 있었지만 여전히 문제가 있습니다. 메인 윈도우가 최대화되었을 때만 (뷰의 최대 가시 영역을 확보하기 위해) 장면의 크기를 설정합니다. 그 목적을 위해 showMaximized()를 시도했지만 제대로 작동하지 않아 QMainwindow :: changeEvent를 다시 구현했으며 상태가 windowMaximized인지 확인했습니다. 이것은 제대로 작동하는 것처럼 보이지만 모든 것이 좋지만 윈도우 프레임의 최대화 버튼을 클릭해야만합니다. 이 문제를 해결하는 방법에 대한 아이디어가 있으십니까? 도와 주셔서 감사합니다! – Expr

0

분명히보기의 크기를 얻을 수 있습니다.

  1. 이보기에 이벤트 필터 객체를 연결 : myView->installEventFilter(filterObject) 그것에 대해 이동하는 방법은 두 가지가 있습니다. filterObjecteventFilter 메소드는 크기 조정 이벤트를 포함하여보기에 도달하는 모든 이벤트에 대해 호출됩니다.

  2. 사용자 정의보기 클래스를 사용하고 resizeEvent을 다시 구현하십시오. 이 메소드는 위젯 크기를 조정할 때마다 호출됩니다. 디자이너는 플러그인을 작성하지 않고도 사용자 정의 클래스를 추가 할 수 있습니다.