Qml: переключить представление qml - PullRequest
0 голосов
/ 21 июня 2020

Я новичок в QML.

У меня есть Loading.qml и main.qml

Я хочу отображать loading.qml при запуске приложения, и когда все мои данные готовы, я хочу скрыть load.qml и отобразить main.qml

Я хочу сделать это из кода c ++

Как я могу это сделать?

Спасибо

[ОБНОВЛЕНИЕ]

Я пробовал это

int main(int argc, char *argv[])
{
   
   QGuiApplication app(argc, argv);
   QQmlApplicationEngine engine;

   qmlRegisterType<MyWindow>("project.mywindow", 1, 0, "MyWindow");

   engine.load(QUrl("qrc:/LoadingPage.qml"));
   if(engine.rootObjects().isEmpty()) return -1;

   // simulate preloading data
   std::this_thread::sleep_for(std::chrono::seconds(5)); 

   engine. ? -> switch to another view ?

   /*engine.load(QUrl("qrc:/main.qml"));
   if(engine.rootObjects().isEmpty()) return -1;*/

   return app.exec();
}

My QML LoadingPage.qml

import QtQuick 2.0
import QtQuick.Window 2.0
import QtQuick.Controls 2.0

ApplicationWindow {
   id: loading
   visible: true
   width: Screen.desktopAvailableWidth
   height: Screen.desktopAvailableHeight
   title: qsTr("Board")

   Loader {
    id: pageLoader
   }

   Component.onCompleted: {
    pageLoader.source = "qrc:/main.qml"
    loading.visible = false
   }

   Image {
    id: logo
    anchors.horizontalCenter: parent.horizontalCenter
    anchors.verticalCenter: parent.verticalCenter
    width: 100
    height: 100
    source: "qrc:/img/download.jpeg"
   }

   Button {
       id: btn
       width: 250
       height: 250
       x: 250
       y: 0
       onClicked: {
        pageLoader.source = "qrc:/main.qml"
        loading.visible = false
       }
   }
}

Я хочу, когда мой main.qml готов (когда конструкция моего класса MyWindow на C ++) в порядке, я хочу переключиться на них.

...