从 Qt quick control 2 加载下一个 Screen/ApplicationWindow
Loading next Screen/ ApplicationWindow from Qt quick control 2
我是Qt quick control 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 quick control 2 都很陌生
一个选项是在从 C++ 导出的对象上有一个 属性,它引用 "current screen"。
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 文件
我是Qt quick control 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 quick control 2 都很陌生
一个选项是在从 C++ 导出的对象上有一个 属性,它引用 "current screen"。
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