How disable drag of points in the x axis on chartview
-
I have a qtchart with a lineseries with 5 points on the graph. I can drag these points on in both x and y axis inside min and max of axisX and axisY.
How can disable drag of points in the x axis? so it is possible to drag points vertically on the chart. Here is my code:ChartView { id: chart property var selectedPoint: undefined anchors.fill: parent antialiasing: true property real toleranceX: 0.05 property real toleranceY: 0.05 ValueAxis { id: axisX min: 0 max: 5 } ValueAxis { id: axisY min: -10 max: 10 } LineSeries { id: series1 axisX: axisX axisY: axisY pointsVisible: true } MouseArea { anchors.fill: parent onPressed: { var cp = chart.mapToValue(Qt.point(mouse.x,mouse.y)); for(var i = 0;i < series1.count;i ++) { var p = series1.at(i); if(Math.abs(cp.x - p.x) <= chart.toleranceX && Math.abs(cp.y - p.y) <= chart.toleranceY) { chart.selectedPoint = p; break; } } } onPositionChanged: { if(chart.selectedPoint != undefined) { var p = Qt.point(mouse.x, mouse.y); var cp = chart.mapToValue(p); if(cp.x >= axisX.min && cp.x <= axisX.max && cp.y >= axisY.min && cp.y <= axisY.max) { series1.replace(chart.selectedPoint.x, chart.selectedPoint.y, cp.x, cp.y); chart.selectedPoint = cp; } } } onReleased: { chart.selectedPoint = undefined; } } } // Add data to the series Component.onCompleted: { for (var i = 0; i <= 5; i++) { series1.append(i, Math.random()); } }So far I could disable drag on x axis for one point in this case point on 3 by changing
onPositionChangedto following code but there are two problems, first this is just one point, second, it does not disable the drag completely instead the point can be dragged on x axis between 2 to 4 but it cannot be dragged outside this range.onPositionChanged: { if(chart.selectedPoint != undefined) { var p = Qt.point(mouse.x, mouse.y); var cp = chart.mapToValue(p); if(cp.x >= axisX.min && cp.x <= axisX.max && cp.y >= axisY.min && cp.y <= axisY.max) { if (Math.round(cp.x) == 3){ series1.replace(chart.selectedPoint.x, chart.selectedPoint.y, cp.x, cp.y); chart.selectedPoint = cp; } } } }