我在我的应用中使用了自定义QML元素。
MyImageView.qml
我可以使用ComponentDefinition在javascript中创建它的实例,例如(为了便于阅读而大大简化的名称和方法):
attachedObjects: [
ComponentDefinition {
id: defMyImageView
MyImageView { }
}
]
function addCustom() {
var obj = defMyImageView.createObject();
obj.customSource = "xyz";
myContainer.add(obj);
}
如何在保留当前MyImageView.qml文件的同时使用c ++执行相同操作?
答案 0 :(得分:1)
经过多次搜索和实验后想出来;)
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
}
}
从c ++中调用上述方法,使用我的自定义图像控件(支持http网址)添加图像,以便动态添加。