2010-01-31 1 views
1

응용 프로그램이 종료되고 다시 시작될 때 QDockWidgets의 위치와 상태를 저장/복원하려고합니다. 다음과 같이 내 메인 윈도우의 흐름은 다음과 같습니다QDockWidgets의 닫힌 상태가 restoreDockWidget에 의해 복원되지 않았습니까?

restoreState(state.toByteArray()); 

// Dock widget gets created 

restoreDockWidget(dockWidget); 

이 한 가지 예외 처리 된 좋은 작품 : 응용 프로그램이 종료, 그들은 자신의 마지막 위치에 응용 프로그램이 실행되는 다음 번에 다시 때 도크 위젯 동안 폐쇄하는 경우 나는 그들에게 초기 숨겨진 상태가 있기를 기대한다. restoreDockWidget의 사용법에 대해 놓친 부분이 있습니까? 또는 도킹 위젯의 가시적 인 상태를 수동으로 처리해야합니까?

업데이트 :

// Dock widget gets created 

restoreState(state.toByteArray()); 

그리고 이전에 숨겨진 위젯이 숨겨져 있습니다 다음과 같이 내가 할 경우합니다. 불행하게도 메인 윈도우가 복원 된 후에 플러그인에 의해 만들어진 위젯을 가지고 있기 때문에이 스키마에 의존 할 수 없습니다.

편집 : 최신 Qt 버전에서 수정 된 것 같습니다. Qt의 코드 (버전 4.5.0)을 검사

답변

1

은 다음과 계시 :

bool QDockAreaLayout::restoreDockWidget(QDockWidget *dockWidget) 
{ 
    ... 
    dockWidget->show(); 
    // dockWidget->setVisible(!placeHolder->hidden); 
    ... 
} 

(QDockAreaLayoutQMainWindow에서 사용하는 개인의 Qt 클래스 참고).

도킹 위젯의 가시성을 설정하는 줄이 주석 처리되어 있고 매번 도크 위젯을 표시하는 줄로 바뀌는 이유가 확실하지 않습니다. 또한 Qt Bug Tracker에서 버그를 찾을 수 없었습니다. 그것은 나에게 버그처럼 보인다.

도크 위젯의 가시성을 수동으로 관리해야하는 것처럼 보입니다.

+0

답변을 주셔서 감사합니다. 현재의 Qt Git에서 여전히 그렇습니까? 그렇다면 restoreState() 만 사용하여 예상되는 동작을 생성하므로 버그 추적기에 문제를 제출할 필요가 있다고 생각합니다. – Gnurou

관련 문제