【问题标题】:Loading next Screen/ ApplicationWindow from Qt quick control 2从 Qt 快速控制 2 加载下一个屏幕/应用程序窗口
【发布时间】:2016-10-12 04:29:06
【问题描述】:

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

【问题讨论】:

    标签: android c++ qt qtquickcontrols2


    【解决方案1】:

    一种选择是在从 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 文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-12
      相关资源
      最近更新 更多