首页 > 解决方案 > Qml : 切换 qml 视图

问题描述

我是 QML 的初学者。

我有一个 Loading.qml 和一个 main.qml

我想在应用程序启动时显示 loading.qml,当我的所有数据都准备好后,我想隐藏 loading.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();
}

我的 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++ 构造时)没问题时,我想切换到它们。

标签: c++11qmlqt5

解决方案


推荐阅读