main.cpp =====call====> main.qml ==call==> componentCreation.js ====call===> Sprite.qml
根据官方文档改写。
========================= main.cpp ============================
#include<QtGui/QApplication>
#include"qmlapplicationviewer.h"i
ntmain(intargc,char*argv[])
{
QApplicationapp(argc,argv);
QmlApplicationViewerviewer
;viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto);
viewer.setMainQmlFile(QLatin1String("qml/SensorControl/main.qml"));
viewer.showExpanded();
returnapp.exec()
;}
========================main.qml==================================
importQtQuick1.0
import"componentCreation.js"asMyScript
Rectangle{
id:appWindowwidth:400;
height:400
color:"blue"
propertyvariantobj;
Rectangle{
id:window1
width:20;
height:20
color:"red"
MouseArea
{
id:mouseArea1
anchors.fill:parentonClicked:{
window2.visible=false;/*www.visible=true*/}
}
Component.onCompleted:{mouseArea1.clicked.connect(MyScript.jsFunction)}}
Rectangle{
id:window2width:120;
height:120color:"yellow";
x:40;y:40
Rectangle
{id:window3width:50;
height:50color:"green";}
}
Rectangle{
id:window4width:50;height:50color:"green";x:window2.x+20;
y:window2.y+20;
Rectangle{
id:window5width:20;height:20color:"black"
MouseArea{id:mouseArea5anchors.fill:parentonClicked:{
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==========================
varcomponent;
functioncreateSpriteObjects(parentId)
{
component=Qt.createComponent("Sprite.qml");i
f(component.status==Component.Ready)r
eturnfinishCreation(parentId);
elsecomponent.statusChanged.connect(finishCreation);}
functionfinishCreation(parentId)
{if(component.status==Component.Ready)
{varsprite=component.createObject(parentId/*appWindow*/,{"x":0,"y":0});if
(sprite==null){//ErrorHandlingconsole.log("Errorcreatingobject");}
sprite.y=200;returnsprite;}
elseif(component.status==Component.Error)
{//ErrorHandlingconsole.log("Errorloadingcomponent:",component.errorString());}}
functionjsFunction(){console.log("CalledJavaScriptfunction!") }
========================= Sprite.qml ==================
importQtQuick1.0
Rectangle
{width:50;height:50;color:"red"
MouseArea
{id:mouse_area1anchors.fill:parent
onEntered:parent.width+=10;
onExited:parent.width-=10;}}