我想制作一个区域,在点击的位置会出现一个小矩形。稍后我会尝试通过拖动添加移动这些矩形的功能。
在学习帮助后,我尝试使用包含MouseArea
的{{1}}和Component
来完成此操作。然后,使用Rectangle
,我试图创建onClicked
的新副本,但我尝试了任何内容都失败了(Component
,createComponent
等。)
在这种情况下,创建对象副本的正确方法是什么? 我是否使用正确的工具来实现这一目标?
createObject
答案 0 :(得分:0)
您可以使用Qt.createQmlObject()
从QML字符串创建QML对象,并将其x和y值设置为mouseX
和mouseY
:
import QtQuick 2.3
import QtQuick.Window 2.0
Window {
id : root
visible: true
width: 1000
height: 500
MouseArea {
anchors.fill: parent
onClicked:{
var newObject = Qt.createQmlObject('import QtQuick 2.3; Rectangle {color: "red"; width: 10; height: 10}',
root);
newObject.x = mouseX;
newObject.y = mouseY;
}
}
}
此外,如果您将矩形的代码放在单独的qml文件中myRect.qml
,则可以通过以下方式从qml文件创建对象:
onClicked:{
var component = Qt.createComponent("myRect.qml");
var newObject = component.createObject(root, {"x": mouseX, "y": mouseY});
}