gpt4 book ai didi

qt - 在 QML 中创建一个矩形的副本

转载 作者:行者123 更新时间:2023-12-01 23:20:40 25 4
gpt4 key购买 nike

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

在研究了帮助之后,我尝试使用 MouseArea 和包含 RectangleComponent 来完成此操作。然后,使用 onClicked,我试图创建一个 Component 的新副本,但无论我尝试什么都失败了(createComponent创建对象等)。

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

MouseArea {
Component {
id: rect

Rectangle {
width: 10
height: 10
}
}

onClicked: < what? >
}

最佳答案

您可以使用 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});
}

关于qt - 在 QML 中创建一个矩形的副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28393611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com