Here is the code just to do for testing. The result is it already appear a red rectangle when the simulator load rather than click the button to create.
//---main.QML----//
Code:
import QtQuick 1.0
import "componentCreation.js" as MyScript
Rectangle {
id: appWindow
width: 300; height: 300
Component.onCompleted: MyScript.createSpriteObjects();
Rectangle{
x: 22
y: 207
height:60
width:40
color: "grey"
MouseArea{
onClicked: Qt.createQmlObject("sprite.qml", appWindow,"object1") }
}
}
//---sprite.qml---//
Code:
import QtQuick 1.0
Rectangle{
height: 60
width: 40
x: 180 * Math.random()
y: 180 * Math.random()
color: "red"
}
//---componentCreation.js---//
Code:
var component;
var sprite;
function createSpriteObjects() {
component = Qt.createComponent("sprite.qml");
if (component.status == Component.Ready)
finishCreation();
else
component.statusChanged.connect(finishCreation);
}
function finishCreation() {
if (component.status == Component.Ready) {
sprite = component.createObject(appWindow);
if (sprite == null) {
// Error Handling
} else {
sprite.x = 100;
sprite.y = 100;
// ...
}
} else if (component.status == Component.Error) {
// Error Handling
console.log("Error loading component:", component.errorString());
}
}