动态创建qml

qml 动态创建 对象 (2011-03-06 21:35)
分类:  QML

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; 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值