Я пытаюсь создать экземпляр QtMobility MapPolyline
и несколько из Coordinate
в QML programmaticaly из функции Javascript.Создание динамического компонента 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
Кажется, это приемлемый способ сделать это, поэтому я приму ответ. Спасибо за Ваш ответ! – Juan