2011-10-20 13 views
5

Mam jeden Loader przy użyciu którego ładuję wiele ekranów/stron.Jak usunąć/usunąć ekran/stronę z wyświetlacza w QML?

Mam około 10 ekranów/stron QML, które ładuję w programie ładującym jeden po drugim na zdarzenia myszy.

Na niektórych ekranach należy ustawić przezroczystość za pomocą funkcji QWidget::setMask(), aby część ekranu/strony stała się przezroczysta, a ekran można dziurkować.

Robię zestaw maski z kodu CPP przy użyciu QWidget::setMask() na ekranie rootObject, który jest Loader.

QWidget::setMask działa idealnie, ale obszar zamaskowany wyświetla poprzednio załadowany ekran/stronę.

Mam więc pytanie, czy element Loader prawidłowo usuwa/usuwa załadowany komponent z ekranu przed załadowaniem nowego ekranu/strony w Loader, jak wspomniano w dokumentach http://doc.qt.nokia.com/4.7-snapshot/qml-loader.html.

Ponadto istnieją dwa funkcja o nazwie Component.onDestroyed i Component.onDestruction

Kiedy załadować nowy ekran/stronę w przypadku ładowarki onDestruction jest wyrzucenie na ekranie załadowany.

Chcę całkowicie usunąć/zniszczyć ekran/stronę z ekranu po załadowaniu nowej strony do modułu ładującego. Próbowałem również ustawić widoczność i krycie wcześniej załadowanego ekranu, ale wciąż widzę ekran/stronę Wcześniej załadowany w obszarze zamaskowanym.

Jeśli ustawię program ładujący source = "" i sourceComponent = undefined, to również widzę poprzednią wczytaną stronę w programie ładującym, ale nie odświeżam ekranu. Poprzednia strona została zniszczona, ale nie została wyczyszczona/usunięta z ekranu.

Jaki powinien być powód?

+0

tylko po to, aby wyjaśnić: używasz jednego pojedynczego programu ładującego i zmieniasz jego właściwość źródłową na jeden z 10 ekranów? –

+0

Mam dokładnie ten sam problem. Czy udało ci się to rozwiązać? – MokaT

Odpowiedz

0

Czy próbowali za pomocą QWidget::clearMask() funkcji w C++ podczas odbierania sygnału Component.onDestruction w załadowanym pliku QML lub podczas odbierania onSourceChanged w Loader?