如何在c ++中从文件创建自定义QML元素?

时间:2014-02-26 14:09:04

标签: c++ qml blackberry-10 blackberry-cascades

我在我的应用中使用了自定义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 ++执行相同操作?

1 个答案:

答案 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网址)添加图像,以便动态添加。