Pregunta

Tengo un elemento QML personalizado que uso en mi aplicación.

myImageView.QML

Puedo crear instancias de ello en JavaScript sin emisión utilizando un componenteDefinición, como (los nombres y métodos simplificados en gran medida, por falta de legibilidad):

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

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

¿Cómo puedo hacer lo mismo usando C ++ mientras mantienes el archivo MyImageView.QML actual?

¿Fue útil?

Solución

se lo descubrió después de una búsqueda y experimentación;)

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
    }
}

El método anterior se llama desde dentro de C ++ para agregar imágenes utilizando mi control de imagen personalizado (que admite las URL HTTP) para que se pueda agregar dinámicamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top