main.cpp =====call====> main.qml ==call==> componentCreation.js ====call===> Sprite.qml
根据官方文档改写。
========================= main.cpp ============================
#include <QtGui/QApplication>
#include "qmlapplicationviewer.h" i
nt main(int argc, char *argv[])
{
QApplication app(argc, argv);
QmlApplicationViewer viewer
;viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto);
viewer.setMainQmlFile(QLatin1String("qml/SensorControl/main.qml"));
viewer.showExpanded();
return app.exec()
; }
========================main.qml==================================
import QtQuick 1.0
import"componentCreation.js" as MyScript
Rectangle {
id: appWindow width: 400;
height: 400
color:"blue"
property variant obj;
Rectangle{
id: window1
width: 20;
height: 20
color: "red"
MouseArea
{
id: mouseArea1
anchors.fill: parent onClicked:{
window2.visible = false;/*www.visible=true*/}
}
Component.onCompleted: { mouseArea1.clicked.connect(MyScript.jsFunction) } }
Rectangle{
id:window2 width: 120;
height: 120 color: "yellow";
x:40;y:40
Rectangle
{ id: window3 width: 50;
height: 50 color: "green"; }
}
Rectangle{
id: window4 width: 50; height: 50 color: "green";x:window2.x+20;
y:window2.y+20;
Rectangle{
id: window5 width: 20; height: 20 color: "black"
MouseArea { id:mouseArea5 anchors.fill: parent onClicked:{
window2.visible = true; /*www.visible=true;*/window2.x = window2.x + 10; obj.y = 10;}
} } }
Component.onCompleted:
{
obj = MyScript.createSpriteObjects(window2);
obj.y = 200;/*newWindow.destroy(1000);*/}
}
========================componentCreation.js==========================
var component;
functioncreateSpriteObjects(parentId)
{
component = Qt.createComponent("Sprite.qml"); i
f(component.status == Component.Ready) r
eturn finishCreation(parentId);
elsecomponent.statusChanged.connect(finishCreation); }
function finishCreation(parentId)
{ if(component.status == Component.Ready)
{ var sprite =component.createObject(parentId/*appWindow*/, {"x": 0, "y": 0}); if
(sprite == null) { // ErrorHandling console.log("Error creating object"); }
sprite.y = 200; return sprite; }
else if(component.status == Component.Error)
{ // Error Handling console.log("Error loadingcomponent:", component.errorString()); } }
function jsFunction() { console.log("CalledJavaScript function!") }
========================= Sprite.qml ==================
import QtQuick 1.0
Rectangle
{ width:50; height: 50; color: "red"
MouseArea
{ id: mouse_area1anchors.fill: parent
onEntered: parent.width +=10;
onExited: parent.width -=10; } }