从Qt快速控件加载下一个屏幕/应用程序窗口

Loading next Screen/ ApplicationWindow from Qt quick control 2

本文关键字:屏幕 应用程序 窗口 下一个 加载 Qt 控件      更新时间:2023-10-16

我对Qt快速控制2的开发非常陌生。我正在为android开发一个跨平台应用程序。我正在加载新的屏幕从c++代码如下

int main(int argc, char *argv[])

{

QApplication app(argc, argv);
QQmlApplicationEngine engine;
CommunicatorClass mCommunication;
engine.rootContext()->setContextProperty("CommunicatorClass", &mCommunication);
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
QObject *topLevel = engine.rootObjects().value(0);
QQuickWindow *window = qobject_cast<QQuickWindow *>(topLevel);
window->show();
return app.exec();

}

这将加载我的登录屏幕。一旦用户提交用户名,密码应用程序在c++代码中验证相同。因此,qml与c++之间的通信工作得很好。现在我想加载下一个屏幕时,用户名和密码得到验证。请指导我如何在这种情况下进行,因为我是非常新的c++和qt快速控制2

一个选项是从c++导出的对象上有一个指向"当前屏幕"的属性。main中的代码。qml然后可以使用Loader来加载该屏幕。

在c++中看起来像这样:

class CommunicatorClass : public QObject
{
    Q_OBJECT
    Q_PROPERTY(QString currentScreen READ currentScreen NOTIFY currentScreenChanged);
public:
    QString currentScreen() const;
signals:
    void currentScreenChanged();
};

在QML中像这样:

Window {
    Loader {
        source: CommunicatorClass.currentScreen
    }
}

假设currentScreen属性指向一个相对于main.qml

的QML文件