QML ChartView:mapToValue 不是很准确?

问题描述

我有一个图表视图,它有一些随机值并且运行良好。

import QtQuick 2.9
import QtQuick.Window 2.2
import QtCharts 2.0

Item {
    visible: true
    width: 640
    height: 480

    ChartView {
        id: chartView
        anchors.fill: parent
        theme: ChartView.ChartThemeBrownSand
        antialiasing: true

        LineSeries {
            id: liness
            name: "LineSeries"
            XYPoint {
                x: 0
                y: 0
            }
            XYPoint {
                x: 1.1
                y: 2.1
            }
            XYPoint {
                x: 1.9
                y: 3.3
            }
            XYPoint {
                x: 2.1
                y: 2.1
            }
            XYPoint {
                x: 2.9
                y: 4.9
            }
            XYPoint {
                x: 3.4
                y: 3.0
            }
            XYPoint {
                x: 4.1
                y: 3.3
            }
        }

        LineSeries {
            name: "xPositioner"
            id: xPositionerX

            style: Qt.DashLine
            XYPoint {
                x: 0
                y: 2
            }
            XYPoint {
                x: 4.1
                y: 2
            }
        }

        LineSeries {
            name: "LineSeries"
            id: positionery
            style: Qt.DashLine
            XYPoint {
                x: 2
                y: 0
            }
            XYPoint {
                x: 2
                y: 4.9
            }
        }

        MouseArea {
            anchors.fill: parent
            cursorShape: Qt.CrossCursor
            onDoubleClicked: chartView.zoomReset()

            hoverEnabled: true
            onPositionChanged: {
                var p = Qt.point(mouse.x,mouse.y)
                var cp = chartView.mapToValue(p,liness)

                xPositionerX.replace(xPositionerX.at(1).x,xPositionerX.at(1).y,xPositionerX.at(1).x,cp.y)

                xPositionerX.replace(xPositionerX.at(0).x,xPositionerX.at(0).y,xPositionerX.at(0).x,cp.y)

                positionery.replace(positionery.at(1).x,positionery.at(1).y,cp.x,positionery.at(1).y)

                positionery.replace(positionery.at(0).x,positionery.at(0).y,positionery.at(0).y)

                xMagView.x = mouseX - xMagView.width / 2
                xMagText.text = cp.x

                yMagView.y = mouseY - yMagView.height / 2
                yMagText.text = cp.y

                console.debug(mouseX,mouseY,cp.y)
            }
        }

        Rectangle {
            id: xMagView
            width: 50
            clip: true
            height: 20
            color: "#592e2e2e"
            y: chartView.plotArea.y + chartView.plotArea.height
            x: chartView.plotArea.x

            Text {
                clip: true
                id: xMagText
                anchors.fill: parent
                wrapMode: Text.WrapAnywhere
                horizontalAlignment: Text.AlignHCenter
            }
        }
        Rectangle {
            id: yMagView
            width: 50
            clip: true
            height: 20
            color: "#592e2e2e"
            y: chartView.plotArea.y
            x: chartView.plotArea.x - 50

            Text {
                clip: true
                id: yMagText
                anchors.fill: parent
                wrapMode: Text.WrapAnywhere
                horizontalAlignment: Text.AlignHCenter
            }
        }
    }
}

在这个图表视图中,我通过一个简单的文本显示了映射到轴上的值的鼠标位置。但它似乎有一点不精确的值,如图所示:

mouseX 和 mouseY 位置与轴不完全匹配! : look at this picture please

mapToValue 有问题吗?

感谢您的任何意见和帮助。

编辑: 我稍微更改了代码以显示确切的问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...