从Qt快速控制2加载下一个屏幕/ ApplicationWindow

时间:2016-10-12 04:29:06

标签: android c++ qt qtquickcontrols2

我是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都很陌生

1 个答案:

答案 0 :(得分:1)

一个选项是在从C ++导出的对象上有一个属性,该属性引用&#34;当前屏幕&#34;。 然后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文件