gpt4 book ai didi

c++ - 使用 QML 绘制图形项目的最佳方式是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:10:17 26 4
gpt4 key购买 nike

在我的 QML 应用程序中,我需要常见的 QGraphicsScene 和 QGraphicsObject 可能性,例如检测碰撞、“可移动”和“可选择”标志、拖放等。我应该从 QQuickItem 继承类还是使用 QML Canvas?当然,我想编写更少的代码并选择“QML 方式”。

最佳答案

对于 QML 中的碰撞检测,您可以使用 Box 2D QML 插件。它有很多好的功能,可以从here下载。 .

您也可以自己实现碰撞检测。例如通过检查这个:

Math.sqrt((ball1.x-ball2.x)*(ball1.x-ball2.x)+(ball1.y-ball2.y)*(ball1.y-ball2.y))<epsilon

要使 QML 项目可移动,您可以执行以下操作:

Image {
id: icon
width: 64
height: 64
source: "liverbird.gif"

MouseArea {
id: liverbirdMouseArea
anchors.fill: parent

property variant iconObj
property int startX
property int startY

onPressed: {
startX = mouseX
startY = mouseY
var iconComp = Qt.createComponent("icon.qml");
iconObj = iconComp.createObject(parent);
iconObj.x = mouseX - iconObj.width/2
iconObj.y = mouseY - iconObj.height/2
}
onPositionChanged: {
iconObj.x += mouseX - startX
iconObj.y += mouseY - startY
startX = mouseX
startY = mouseY
}
onReleased: {
iconObj.destroy()
}
}
}

关于c++ - 使用 QML 绘制图形项目的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22736180/

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