Important: Please read the Qt Code of Conduct -

[SOLVED] QQmlComponent: Component is not ready

  • Okay, clearly this means the component is still loading but I don't understand how it not instant:
    @objectContext->setContextProperty("petStage", stageNode);
    component->loadUrl(QUrl::fromLocalFile("Scripts/" + (QString)stageNode->GetTeam(turnIndex)->GetPet(i)->GetAura(j)->GetAuraId() + ".qml"));
    object = component->create(objectContext);
    //Call ApplyAuraStart; paramters are TeamNumber, PetNumber, AuraIndex and AuraDuration.
    QMetaObject::invokeMethod(object, "applyAuraStart", Q_ARG(QVariant, turnIndex), Q_ARG(QVariant, i), Q_ARG(QVariant, j), Q_ARG(QVariant, stageNode->GetTeam(turnIndex)->GetPet(i)->GetAura(j)->GetDuration()));@

    It's all done locally, in fact if I randomly create the QQmlContext, QQmlComponent, QObject in any class to open up a specific file, it works. Somehow when I started trying to open it in a for loop it fails. Calling invokeMethod seems to respond with the component not having loaded.

    At this point, I do not have an alternative but to make this work, I just need to figure out how to wait until the component is ready.

    Solution: Casting an int to a QString does NOT work QString::number(int) does.

  • You have to use component's signal that notify to you when creation status has changed.

Log in to reply