QML DateTimeAxis 带有固定的 Tick ancors

问题描述

我使用 QML DateTimeAxis 作为 X 轴来显示曲线。 Y 轴是一个 ValueAxis 并显示我的信号的电压。现在我将滴答计数设置为 5,范围是 1 分钟。所以每 15 秒是一个滴答声

0:00、0:15、0:30、0:45、1:00

随着时间的推移,测量时间(X 轴)已达到 1 分钟,图表开始向右平滑滚动。但是刻度线停留在那里的 x 位置。因此,在 1:06 分钟后,最小值为 0:06,最大值为 1:06 ......没关系。但是现在在

0:06、0:21、0:36、0:51、1:06

我希望他们留在

0:15、0:30、0:45、1:00

下一个刻度应该在 1:15

为此,我将一个函数 updateTicks() 添加到我的 DateTimeAxis 并将其命名为 onRangeChanged。在此函数中,我使用 mapToPosition 计算刻度的 x 位置,并在此位置向 ChartView 添加细矩形。

但是有更好的方法吗?

这是我写的部分代码:

ChartView {
    id: chartView

    Repeater{
        id: timeTicks
        property double tickX
        property double tickY
        property double tickHeight
        property double tickSpacing: 0

        model: 4

        Rectangle {
            width: 1
            color: "black"
            x: timeTicks.tickX+timeTicks.tickSpacing*index
            y: timeTicks.tickY
            height: timeTicks.tickHeight
        }
    }

    DateTimeAxis {
        id: axisX
        min: context.startTime
        max: context.endTime
        tickCount: 0
        format: "mm:ss"
        color: "black"
        labelsColor: color

        property int timeWidth: 60000

        onRangeChanged: updateTicks()

        function updateTicks(){

            var diff = timeWidth / timeTicks.model;
            var tick = Math.ceil(axisX.min.getTime() / diff) * diff;

            var top = Qt.point(tick,axis.max);
            var bottom = Qt.point(tick,axis.min);

            var topMapped = chartView.mapToPosition(top,axis)
            var bottomMapped = chartView.mapToPosition(bottom,axis)

            timeTicks.tickHeight = bottomMapped.y-topMapped.y;

            timeTicks.tickX = topMapped.x;
            timeTicks.tickY = topMapped.y;

            timeTicks.tickSpacing = chartView.mapToPosition(Qt.point(diff,0),axis).x - chartView.mapToPosition(Qt.point(0,axis).x;
        }
    }

    ValueAxis {
        id: axis
        min: 0
        max: 100
    }

}

解决方法

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

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

小编邮箱: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...