c – 使用QML绘制图形项目的最佳方法是什么?

在我的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()
        }
    }
} 
点赞