chartView:轴值在缩放时发生变化
Posted
技术标签:
【中文标题】chartView:轴值在缩放时发生变化【英文标题】:chartView: axis values change on Zooming 【发布时间】:2021-05-04 23:55:55 【问题描述】:我的 Qml 中有一个简单的图表视图:
import QtQuick 2.9
import QtQuick.Window 2.2
import QtCharts 2.0
Window
visible: true
width: 640
height: 480
title: qsTr("Hello World")
ChartView
id: chartView
anchors.fill: parent
theme: ChartView.ChartThemeBrownSand
antialiasing: true
LineSeries
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
MouseArea
anchors.fill: parent
onDoubleClicked: chartView.zoomReset();
我用一个矩形来放大它。:
var r = Qt.rect(x, y, w, h)
chartView.zoomIn(r)
还有它的工作格栅!但问题是当用户在图表内部放大时,轴中的值会发生变化。新的价值观会发生一些变化。 所以当用户想要放大一个值并且值的范围很大时,用户会丢失他想要放大的特定值。
主要问题是因为刻度不是基于值...它们基于范围的最大值和最小值
(max - min)/ticks = new ticks on the axis
我需要将它们固定在数字上,以便即使在绘图中缩放 10 次或更多的刻度线仍然保持在值上。
【问题讨论】:
你试过了吗:animationOptions:ChartView.GridAxisAnimations
是的。但它只是在网格变化上设置了一些动画。没有帮助
【参考方案1】:
您可以根据此文档qml-qtcharts-valueaxis 设置基于值的刻度:
tickType : ValueAxis.TicksDynamic : 根据 tickAnchor 和 tickInterval 值放置刻度
ValueAxis
id: axisX
min: 0
max: 10
tickCount: 5
tickAnchor: 1
tickInterval: 1
tickType : ValueAxis.TicksDynamic
所以只需设置tickInterval 和tickAnchor 并且刻度基于轴上的值。
【讨论】:
以上是关于chartView:轴值在缩放时发生变化的主要内容,如果未能解决你的问题,请参考以下文章