¿Cómo crear elemento QML personalizado del archivo en C ++?
-
21-12-2019 - |
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?
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