Domanda

Ho un elemento QML personalizzato che uso nella mia app.

myimageview.qml

Posso creare istanze di esso in JavaScript senza problemi utilizzando un componenteDefinizione come (nomi e metodi enormemente semplificati per motivi di leggibilità):

attachedObjects: [
    ComponentDefinition {
        id: defMyImageView
        MyImageView { }
    }
]

function addCustom() {
    var obj = defMyImageView.createObject();
    obj.customSource = "xyz";
    myContainer.add(obj);
}
.

Come posso fare lo stesso usando C ++ mantenendo il file Myimageview.qml corrente?

È stato utile?

Soluzione

ha capito dopo molte ricerche e sperimentare;)

void ArticleParser::addImage(QString imageUrl, QString title) {
    QmlDocument *document = QmlDocument::create(
            "asset:///Articles/ArticleImage.qml"); //load qml file
    document->setParent(rootContainer); 

    if (!document->hasErrors()) {
        //Create Imageview
        Control *control = document->createRootObject<Control>();
        control->setProperty("source", imageUrl); //custom property
        control->setProperty("caption", title); //custom property

        rootContainer->add(control); //add control to my main container
    }
}
.

Il metodo di cui sopra è chiamato all'interno di C ++ per aggiungere immagini utilizzando il mio controllo immagine personalizzato (che supporta gli URL HTTP) in modo che possa essere aggiunto dinamicamente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top