Зареждане на живо след запазване

Току-що започнах да програмирам в QML с помощта на QtCreator. Предпочитам да пиша QML файлове с помощта на редактор на код, а не редактор на дизайн. Но след всяко запазване трябва да стартирам приложението, за да видя промените. Дори активирането на автоматично запазване при компилация не е решение, защото се появява нов прозорец за всяка компилация, но старите прозорци все още са на работния плот.

Така че написах този двуредов скрипт в bash, за да презаредя потребителския интерфейс след запазване на QML:

while sleep 0.1; do qmlscene main.qml; done &
while true; do while inotifywait -e close_write *.qml; do killall qmlscene; done; done &

Когато се запише QML, се извиква killall qmlscene, след което се стартира нов qmlscene.

Предоставя ли QtCreator функция за повторно зареждане на живо като тази? Не е необходимо да прекомпилирам, презареждането на qml файлове трябва да е наред.


person Alessandro Pezzato    schedule 22.07.2015    source източник


Отговори (2)


Имате clearComponentCache, но ще трябва да презаредите qml след извикване то:

view->engine()->clearComponentCache();
view->setSource("qml/main.qml");
view->show();
person Mido    schedule 22.07.2015
comment
Търся IDE функция, искам да избегна промяна на кода. Нещо като qmlscene --watch main.qml - person Alessandro Pezzato; 22.07.2015
comment
Не, няма да намерите никаква IDE, която да прави това, винаги ще трябва да затворите и след това да отворите приложението или да изчистите и презаредите кеша. - person Mido; 22.07.2015

V-Play Engine предлага QML Live Reloading за приложения и игри на Windows, Linux, MacOS, iOS и Android.

Можете да намерите повече информация в нашия блог тук:

https://v-play.net/updates/release-2-14-0-live-code-reloading-for-desktop-ios-android

Наскоро добавихме и презареждане на живо от браузъра, за да тестваме примери за код направо от документацията и блога:

https://v-play.net/cross-platform-development/web-editor-test-online-code-examples-on-android-and-ios-with-live-code-reloading

person Alex Huber    schedule 05.03.2018