2010-06-01 6 views
5

우리는 QT 애플리케이션에서 여러 개의 '뷰어 창'(XY 평면, YX 평면, XZ 평면 및 3D로 데이터를 표시하기 위해)을 표시해야합니다.MDI 모델 또는 Dock Windows?

우리는 MDI 응용 프로그램 모델을 사용하려고했지만 나중에 클라이언트는 여러 대의 모니터 (여러 대의 모니터 사용)에서 '뷰어 창'을 드래그하여 볼 것을 요구했습니다. MDI 창을 주 응용 프로그램 창 외부로 이동할 수 없으므로 MDI 창 모델을 사용하여이 작업을 수행 할 수 없습니다.

Dock 창은 주 응용 프로그램 창에서 도킹 해제하고 다른 바탕 화면으로 이동할 수 있지만 도구 팔레트 나 유틸리티 창에는 주로 사용되는 Dock 창으로 사용할 수 있습니다. 그것은 우리의 요구 사항에 대한 독 창을 사용하는 것이 좋습니다

(http://doc.qt.nokia.com/4.6/qdockwidget.html#details)

인가?

+0

문제를 해결 했습니까? – Beachwalker

+0

예, 부모가없는 QWidgets 만 사용했습니다. Windows (QWidgets) 목록을 유지하기 위해 컨텍스트를 관리하고이 컨텍스트를 사용하여 컨텍스트를 동기화했습니다. –

답변

3

클라이언트 영역을 사용하지 않으므로 QDockWindow를 사용하지 않을 것입니다. 또한 MainWindow 테두리에 도킹하지 않고 MainWindow에 위젯을 추가하기 만하면됩니다.

여러 QWidget을 QGridLayout과 함께 사용해 볼 수 있다고 생각합니다. MainWindow 외부에서 QWidget을 드래그 할 때 레이아웃에서 QWidget을 제거하기 만하면됩니다. MainWindow 내부로 드래그하면 QWidget을 QGridLayout의 적절한 위치에 추가합니다. 이 방법으로 위젯의 위치를 ​​메인 창으로 전환 할 수 있습니다.

충분히 명확한지는 모르겠지만 새로운 요소를 레이아웃으로 드래그 할 때 QtDesigner에서와 동일한 방식으로 생각하고 있습니다. 위젯을 드래그하면 마우스 버튼을 놓을 때 추가되는 위치를 볼 수 있습니다.

내 생각에이 방법이 당신이 찾고있는 방법 일 수 있습니다.

희망 하시겠습니까

+0

답장을 보내 주셔서 감사합니다. 나는 당신이 제안한 방식을 구현하려고 노력할 것입니다. 하지만 스마트 해킹이 필요해 보인다. QGridLayout을 사용하여 SDI 모델로 이동해야하지만 부모없이 QWidgets를 표시하려면 어떻게해야합니까? –

+2

부모가없는 위젯 인 경우 위젯은 QWidget에 대한 자세한 설명의 설명과 같이 독립 실행 형 윈도우가됩니다. http://doc.qt.nokia.com/4.6/qwidget.html#details –