Come creare un elemento QML personalizzato dal file in C ++?
-
21-12-2019 - |
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?
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