М
March 27, 2019, 7:15 p.m.

Переключение между окнами QML

Добрый день.

Создал несколько страничек QML

В Page0Form.ui.qml создал кнопку и пытаюсь с помощью сигнала переключится на страничку Page1

  1. import QtQuick 2.4
  2.  
  3. Page0Form {
  4. page0Button0.onClicked: {
  5. Page1.show()
  6. }
  7. }

Но у Page1 нет таких свойств

Скажите пожалуйста, как переключиться на другую страничку? Мне нужно задать какой-то другой id?

3
The question is asked by the articleQML - Lesson 021. Switching between windows in QML

Do you like it? Share on social networks!

8
Алексей Внуков
  • March 27, 2019, 7:17 p.m.
  • (edited)

Вам нужно вашу новую струницу загрузить в лоадер, тогда она отобразится

п.с. в Qt Quick Controls 2 есть много различных способов загрузить страницу, или несколько страниц обьеденив их в определенную группу. ознакомьтесь, много узнаете интересного. так же вы можете такие примеры посмотреть в Qt Creator в разделе примеры

    М
    • March 27, 2019, 7:21 p.m.

    Сейчас он вышлядит у меня так

    1. import QtQuick 2.9
    2. import QtQuick.Window 2.2
    3.  
    4. Window {
    5. visible: true
    6. width: 400
    7. height: 600
    8. title: qsTr("Psychic Training")
    9.  
    10. Loader
    11. {
    12. id: loader
    13. anchors.fill: parent
    14. source: "Page0.qml"
    15. }
    16. }
    17.  

    Скажите пожалуйста как дописать, что бы при этом стартовой страницей оставалась Page0

      Алексей Внуков
      • March 27, 2019, 7:28 p.m.
      • The answer was marked as a solution.

      у лоадера есть функция загрузки новой страницы

      1. onClicked:
      2. {
      3. loader.source = "Page.qml"
      4. }

      только решите вопрос видимости обьектов

        М
        • March 27, 2019, 7:34 p.m.

        Спасибо, так работает

          Михаиллл
          • March 27, 2019, 7:44 p.m.

          На второй странице сделал также

          1. import QtQuick 2.4
          2.  
          3. Page1Form {
          4. page1ButtonMenu.onClicked: {
          5. loader.source = "Page0.qml"
          6. }
          7. }
          8.  

          но на страницу Page0 не переходит

            Алексей Внуков
            • March 27, 2019, 7:55 p.m.

            а лоадер между страницами виден?
            как писал выше, нужно учитывать области видимости

              Михаиллл
              • March 27, 2019, 8:02 p.m.

              не знаю. как это учитывать?
              добавил еще несколько страниц и магическим образом заработало

                Михаиллл
                • March 27, 2019, 9:43 p.m.

                оказалось, это баг
                нужно хапускать qmake и только тогда работает

                  Comments

                  Only authorized users can post comments.
                  Please, Log in or Sign up
                  • Last comments
                  • AK
                    April 1, 2025, 11:41 a.m.
                    Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
                  • Evgenii Legotckoi
                    March 9, 2025, 9:02 p.m.
                    К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
                  • VP
                    March 9, 2025, 4:14 p.m.
                    Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
                  • ИМ
                    Nov. 22, 2024, 9:51 p.m.
                    Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
                  • Evgenii Legotckoi
                    Oct. 31, 2024, 11:37 p.m.
                    Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup