2011-10-20 2 views
5

나는 하나의 Loader을 사용하여 여러 화면/페이지를로드하고 있습니다.화면/페이지를 QML의 디스플레이에서 삭제/제거하는 방법은 무엇입니까?

나는 약 10 개의 QML 화면/페이지를 마우스 이벤트에서 하나씩 로더에로드하고있다.

화면의 일부에서 QWidget::setMask() 기능을 사용하여 투명도를 설정해야 화면/페이지의 일부를 투명하게 만들고 펀치 구멍을 화면에 표시해야합니다.

rootObjectQWidget::setMask()을 사용하여 CPP 코드에서 마스크를 설정하고 있는데, Loader 화면입니다.

QWidget::setMask은 완벽하게 작동하지만 마스킹 영역은 이전에로드 된 화면/페이지를 표시합니다.

Loader 요소는 http://doc.qt.nokia.com/4.7-snapshot/qml-loader.html 문서에서 설명한대로 Loader에 새 화면/페이지를로드하기 전에 디스플레이에서로드 된 구성 요소를 제대로 삭제/제거합니까?

또한이 두 가지 기능 나는로드 화면 해고 된 로더 onDestruction 이벤트에서 새 화면/페이지를로드 할 때

Component.onDestroyedComponent.onDestruction 이름.

로더에서 새 페이지를로드하면 화면에서 페이지/페이지를 완전히 제거/제거하고 싶습니다. 이전에로드 된 화면의 가시성과 불투명도를 설정하려고했지만 여전히 마스크 된 영역에서 이전에로드 된 화면/페이지를 볼 수 있습니다.

로더의 source = ""sourceComponent = undefined을 설정하면 로더에 이전에로드 된 페이지가 표시되어 화면이 새로 고쳐지지 않습니다. 이전 페이지는 소멸되지만 디스플레이에서 삭제/제거되지 않습니다.

이유가 무엇입니까?

+0

: 하나의 단일 로더를 사용하고 소스 속성을 10 개의 화면 중 하나로 변경하고 있습니까? –

+0

나는 똑같은 문제가있다. 이 문제를 해결할 수 있었습니까? – MokaT

답변

0

로드 된 qml 파일에 Component.onDestruction 신호를 수신하거나 onSourceChangedLoader에 수신하면 C++에서 QWidget::clearMask() 함수를 사용해 보셨습니까?