2016-10-12 9 views
1

Qtクイックコントロール2の開発は非常に新しくなっています。私はアンドロイドのための1つのクロスプラットフォームアプリケーションを開発しています。私はQtクイックコントロール2からの次画面/ ApplicationWindowの読み込み

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++コードから新しい画面をロードしています。ユーザーがUsernameを送信すると、PasswordアプリケーションはC++コードで同じことが確認されます。したがって、qmlとC++の間の通信は正常に動作しています。今私は、ユーザー名とパスワードが検証されると次の画面をロードしたい。このケースでは、私がC++とqtの両方のクイックコントロール2に非常に新しいので、このケースで進めてください。

答えて

1

"現在の画面"を参照するC++からエクスポートされたオブジェクトにプロパティを設定する方法があります。 main.qmlのコードでLoaderを使用してその画面を読み込むことができます。いくらかのようQMLで

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

public: 
    QString currentScreen() const; 
signals: 
    void currentScreenChanged(); 
}; 

:C++におけるこのようなビットになります

Window { 
    Loader { 
     source: CommunicatorClass.currentScreen 
    } 
} 

currentScreen性が

をmain.qmlするQMLファイル相対指すと仮定
関連する問題