jaki jest właściwy sposób na ponowne załadowanie pliku QML do QQuickView? Używam Qt Quick 2.1 i próbuję napisać prosty program, który ładuje plik qml i wyświetla go. Obecnie robię to, tworząc QQuickView i kiedy chcę przeładować plik qml, usuwam stary i tworzę nowy. Jaki jest właściwy sposób robienia tego? wywoływanie QQuickView :: setSource z nowym plikiem qml (lub zmienionym plikiem qml) nie działało dla mnie.Jak ponownie załadować plik QML do QQuickView
6
A
Odpowiedz
10
można użyć następujących (zakładając, że jesteś w podklasie QQuickView
):
QUrl tmp = source();
setSource(QUrl());
engine()->clearComponentCache();
setSource(tmp);
1
Można zrobić to swoje sposoby:
Tworzenie main.qml (nazwa może być cokolwiek) plik, wewnątrz której, będzie faktycznie załadunku i rozładunku inne pliki QML.
Następnie użyj qml loader element do załadowania/wyładowania (odśwież, jeśli możesz) dowolnego innego pliku.
+1
Właściwie Próbowałem to i to nie działa, ponieważ mechanizm cache QQmlEngine za to robi nie dbają o zmiany wprowadzone w pliku qml. Aby rozwiązać ten problem, muszę wyczyścić pamięć podręczną w sposób opisany w poprzedniej odpowiedzi. – otto
Powiązane problemy
- 1. Jak odświeżyć/załadować ponownie plik aplikacji/pdf?
- 2. Jak ponownie załadować/odświeżyć plik app.config?
- 3. Jak ponownie załadować gdbinit?
- 4. Jak ponownie załadować TreeStore?
- 5. Jak wziąć zrzut ekranu Qt/QML
- 6. Jak ponownie załadować przycisk twitter?
- 7. Jak mogę załadować plik PHP do zmiennej?
- 8. Jak załadować plik scala do konsoli sbt?
- 9. Jak załadować plik przeceny do komponentu reagowania?
- 10. Jak załadować lokalny plik html do Jsoup?
- 11. Jak mogę ponownie załadować skrypt w IRB?
- 12. Jak ponownie załadować bieżącą stronę w Express.js?
- 13. Jak ponownie załadować stronę po zmianie orientacji?
- 14. Jak przywrócić plik w Visual Studio 2010 (ponownie załadować plik z dysku)
- 15. Jak ponownie załadować programowo przeniesiony wiersz?
- 16. Jak ponownie załadować kolekcję relacji w laravel?
- 17. Jak ponownie załadować stronę w kątowym2
- 18. Jak ponownie załadować Ext.tree.TreePanel na żądanie?
- 19. Jak ponownie załadować moduł po zmianie?
- 20. Kiedy ponownie uruchomić i nie ponownie załadować Nginx?
- 21. SVN - Jak załadować pojedynczy plik?
- 22. Jak ponownie załadować dane na osi czasu Simile
- 23. Javascript ponownie załadować stronę z wartością mieszania
- 24. Jak mogę natychmiast ponownie załadować ikonę folderu, gdy zmieni się plik desktop.ini
- 25. Jak ponownie sformatować plik XML w Phpstorm?
- 26. Jak wstępnie załadować plik konfiguracyjny w angular2
- 27. Jak ponownie zmontować plik .hex do C++ dla Arduino?
- 28. PyQt5 QML Signal to Python Slot?
- 29. Jak załadować plik javascript do DOM przy użyciu selenu?
- 30. Jak załadować plik javascript lub css do szablonu BottlePy?
zadziałało. Okazuje się, że jeśli używasz setSource z plikiem, którego już używasz, Qt używa mechanizmu pamięci podręcznej i nie dba o zmiany wprowadzone w pliku qml. jeśli chcesz, aby QQuickView przeładował plik qml, aby wyczyścić pamięć podręczną QQmlEngine. To bardzo pomocne, wielkie dzięki. – otto
Ta funkcja silnika pojawia się z dokumentów, aby wyczyścić * wszystkie * pamięć podręczną w całym interfejsie Qt Quick, co może stanowić problem, jeśli chcesz tylko przeładować pojedynczy element QQuickView. Czy to brzmi dobrze? –
Używam WebView w QML i chcę zniszczyć wszystkie pliki cookie i przechowywane dane. Ale engine() -> clearComponentCache(); setSource (source()); nie pomaga – Robotex