2
我試圖從Javascript函數中創建QML程序中QtMobility MapPolyline
和幾個Coordinate
的實例。QML動態組件創建
據我所見,從Javascript函數創建新實例的唯一方法是使用Qt.createComponent
和Qt.createQmlObject
。但是,我無法找到一種方法來調用createComponent
這將工作(我總是得到一個文件不存在的錯誤)。我想避免Qt.createQmlObject
,因爲這似乎是一個非常糟糕的做法。
有沒有乾淨的方法來實現這一目標?
Component {
id: polyGenerator
MapPolyline {}
}
function addPoly() {
//This next line works, but crashes when trying to add positions
//createPoly(polyGenerator);
var component = Qt.createComponent("Rectangle");
console.log(component.status + " " + Component.Null);
if (component.status == Component.Ready) {
createPoly(component);
} else if (component.status == Component.Error) {
console.log("Error: " + component.errorString());
} else {
component.statusChanged.connect(function() {
if (component.status == Component.Error) {
console.log("Error: " + component.errorString());
return;
}
createPoly(component);
});
}
}
function createPoly(component) {
var poly = component.createObject(map);
poly.border.color = "red";
poly.border.width = 4;
// I get a crash here, my guess is that I need proper Coordinate objects
poly.addCoordinate({latitude: -34.60553, longitude: -58.38088});
poly.addCoordinate({latitude: -34.60720, longitude: -58.38081});
poly.addCoordinate({latitude: 34.60720, longitude: -58.38081});
poly.addCoordinate({latitude: -34.60597, longitude: -58.37930});
map.addMapObject(poly);
}
是的,我知道它需要一個URL。但是,因爲我的目標是實例QtMobility項目,所以我不知道URL。示例代碼是幾次迭代試圖使其工作的產物,而Rectangle位只是一個測試,我知道它不應該工作。 – Juan 2011-12-16 04:16:25