Я очень новичок в разработке 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
Одним из вариантов является наличие свойства объекта, экспортируемого из 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
Других решений пока нет …