将一个UI加载到另一个UI之上

Load one UI on top of another

本文关键字:UI 加载 另一个 之上 一个      更新时间:2023-10-16

我正在开发一个BB10应用程序。

我有一个包含登录按钮的QML文件。

当用户单击Login Button时,应该加载另一个QML文件,其中包含用户名和密码文本框以及提交和取消两个按钮。

在点击取消按钮时,用户应该返回包含登录按钮的初始QML。

如何使用c++完成这样的场景

您可以编写一个函数,用于单击登录按钮加载下一个qml文件。

ApplicationUI::ApplicationUI(bb::cascades::Application *app) :
    QObject(app) {
QmlDocument *loginQml = QmlDocument::create("asset:///Login.qml").parent(
        this);
loginQml->setContextProperty("myApp", this);
rootLogin = loginQml->createRootObject<AbstractPane>();
rootLogin->setParent(this);
QmlDocument *secondPage = QmlDocument::create("asset:///SecondPage.qml").parent(
        this);
secondPage->setContextProperty("myApp", this);
rootSecond = secondPage->createRootObject<AbstractPane>();
rootSecond->setParent(this);
callFirstQml();
}
void ApplicationUI::callFirstQml() {
Application::instance()->setScene(0);
Application::instance()->setScene(rootLogin);
}
void ApplicationUI::callSecondQml() {
Application::instance()->setScene(0);
Application::instance()->setScene(rootSecond);
}

我猜这对你有用。确保在头文件中将函数名写成QINVOKABLE。此外,rootLogin和rootSecond也应该写入头文件中,如下所示:

private:
bb::cascades::TabbedPane *rootLogin;
bb::cascades::TabbedPane *rootSecond;