2014-07-14 2 views
2

부동, Qt는 5.3QDockWidget - 보더와 윈도우 7 승

나는 내 응용 프로그램과 함께 QDockWidget를 사용합니다. 의도 한대로 작동합니다.

이제 setTitleBarWidget(new QWidget(this))을 기본 구성된 위젯으로 설정하여 제목 표시 줄을 숨 깁니다. 이것이 Qt 문서에 따른 표준 방법입니다. 제목 표시 줄이 사라졌습니다.

창으로 내 위젯을 도킹 해제하려면 내 슬롯에 myDockWidget->setFloating(true)을 사용합니다. 그러나 이제 위젯이 도킹 해제되면 떠 다니는 창이 더 이상 경계선을 가지지 않습니다 (따라서 움직일 수 없습니다).

setTitleBarWidget을 주석 처리하면 myDockWidget->setFloating(true)도 작동합니다. 그래서 원래의 제목 표시 줄은 일부 논리를 통합하는 것으로 보입니다. 그러나 소스 코드를 살펴보면 특별한 것을 찾을 수 없었습니다.

문제를 극복하기 위해 내가 할 수있는 일이 무엇이 있습니까?

+0

후속 조치, 탭 모음 없음 텍스트 : http://stackoverflow.com/questions/24851977/hide-label-text-for-qt-tabs-without-setting-text-to-empty-string –

답변

2

이것은 예상되는 동작입니다. QDockWidget::setTitleBarWidget 문서를 참조하십시오 :

제목 표시 줄 위젯이 설정된 경우 QDockWidget은 플로팅시 기본 창 장식을 사용하지 않습니다.

이 동작의 목적은 도킹 위젯에 대해 완전히 사용자 지정된 제목 표시 줄을 구현할 수있게하는 것입니다.

해결 방법은 위젯이 부동 또는 고정 될 때 방출되는 신호 인 QDockWidget::topLevelChanged에 연결하고 기본값 동작을 복원하기 위해 부동 상태 인 동안 제목 표시 줄 위젯을 0으로 설정하는 것입니다.

이전 제목 표시 줄 위젯은 기본 제목 표시 줄이 설정되어 있으면 삭제되지 않으므로 이전에 사용한 QWidget을 삭제하거나 포인터를 저장하고 다음 번에 사용해야합니다.

+0

예, 실제로, 당신 말이 맞아, 힌트 주셔서 감사합니다. 당신이 말한대로 일을 확인했습니다. 완전성을 위해 : 원래 제목 위젯을 "저장"하고 떠 다니는 경우 nullptr 대신이 값을 설정하면 작동하지 않습니다. nullptr로 설정하면 트릭을 수행합니다. –