在QML中创建矩形的副本

时间:2015-02-08 11:54:44

标签: qt qml qtquick2 qt-quick

我想制作一个区域,在点击的位置会出现一个小矩形。稍后我会尝试通过拖动添加移动这些矩形的功能。

在学习帮助后,我尝试使用包含MouseArea的{​​{1}}和Component来完成此操作。然后,使用Rectangle,我试图创建onClicked的新副本,但我尝试了任何内容都失败了(ComponentcreateComponent等。)

在这种情况下,创建对象副本的正确方法是什么? 我是否使用正确的工具来实现这一目标?

createObject

1 个答案:

答案 0 :(得分:0)

您可以使用Qt.createQmlObject()从QML字符串创建QML对象,并将其x和y值设置为mouseXmouseY

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});
}