Как предотвратить запуск второй страницы в PageStack?

Как предотвратить запуск второй страницы в PageStack?

Возможно, я что-то упускаю, но я не уверен, почему код выполняется до загрузки страницы 2.

http://pastebin.ubuntu.com/8068379/

И есть ли способ предотвратить запуск функций и кода на странице 2 до нажатия кнопки?

решение1

Component.onCompletedзапускается, как только интерпретатор прочитал файл QML и разобрал его на объекты. Ваш объект "страница 2" создан в это время, но он создан, visible: falseпоэтому вы его не видите. Это не мешает onCompletedкоду работать.

Я знаю три способа заставить код выполняться только тогда, когда страница помещается в стек:

  1. Создайте пользовательскую функцию, которая вызывает pageStack.push()и запускает любой другой код, который вы хотите выполнить.

  2. Переместите код из onCompletedобработчика страницы 2 в onVisibleChangedобработчик. Обратите внимание, что это будет вызвано как при добавлении страницы в стек, так и при ее извлечении из стека; проверьте значение , visibleчтобы узнать, что происходит.

  3. Переместите объект страницы 2 в отдельный файл, скажем, "page2.qml", и измените вызов push на pageStack.push(Qt.resolvedUrl("page2.qml")). Это будет создавать новый объект страницы 2 каждый раз, когда он будет помещаться в стек; это может быть, а может и не быть тем, что вам нужно.

Обратите внимание, что все три из них будут вызывать код каждый раз, когда страница 2 помещается в стек. Если вы хотите, чтобы он был вызван только в первый раз, вам придется отслеживать это самостоятельно. Для получения дополнительной информации о том, как создание объекта взаимодействует с pageStack, ознакомьтесь сэтот ответ.

Связанный контент