Android — Загрузка следующего экрана / ApplicationWindow из 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();

}

Это загружает мой экран входа. Когда пользователь отправляет имя пользователя, приложение Password проверяет его в коде c ++. Следовательно, связь между qml и c ++ работает нормально. Теперь я хочу загрузить следующий экран, когда имя пользователя и пароль будут подтверждены. пожалуйста, объясните мне, как действовать в этом случае, так как я очень плохо знаком с c ++ и qt quick control 2

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 свойство ссылается на файл QML относительно main.qml

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]