qcustomplot时间坐标轴画直线_QCustomplot使用分享(六) 坐标轴和网格线

本文详细介绍了QCustomPlot库中坐标轴的使用,特别是时间坐标轴的定制。通过对比QCustomPlot的1.3.2版本和2.0.0版本的坐标轴功能,探讨了如何计算和绘制坐标轴刻度,包括QCPAxisTicker基类及其子类的用法。此外,还讨论了QCPGrid网格线的设置和控制,并提供了一个自定义刻度计算类的示例,展示如何保持固定像素的刻度间距。文章适合需要对QCustomPlot进行精细控制的开发者阅读。
摘要由CSDN通过智能技术生成

一、概述

前边已经写了5篇对QCustomPlot的讲解,看过上述的几篇文章后,基本就能做一些简单的使用了,但是如果想要做到高度的控制图表,那么坐标轴将是很重要的一部分,因为坐标轴就是图表的一个参考系,没有了参考系那么一切都是天方夜谭。关于QCustomPlot的坐标轴我还是会按照之前的套路,首先对比1.3.2版本和2.0.0beta版本,然后在深入的去分析坐标轴使用。

二、历史版本对比

首先我需要和大家伙说明下,我个人觉着在QCustomPlot的定制过程中,坐标轴定制算是比较困难的,因为坐标轴如果要定制的话,那就是坐标轴的刻度需要自己计算,如果这个时候相关的业务逻辑也影响坐标轴的计算,那么就更难计算了,呵呵。。。或许大家伙可能也不会遇到这些问题,有兴趣的同学也可以自己思考下。

1.3.2版本

2.0.0版本

坐标轴

1、QCPAxis:坐标轴类,所有坐标轴功能都在这一个类总实现,包括:刻度计算和绘制文本

2、默认刻度自动计算,负责计算大刻度和小刻度

3、如果需要外部计算刻度则处理ticksRequest请求

1、QCPAxis:坐标轴类,所有坐标轴功能都在这一个类总实现,包括:刻度计算和绘制文本

2、默认刻度自动计算,负责计算大刻度和小刻度

3、如果需要外部计算刻度则处理ticksRequest请求

表1 1.3.2版本和2.0.0版本坐标轴比较

下面我将针对2.0.0版本的坐标轴刻度计算来加以解释,为了方便起见,我只解释QCPAxisTicker这个坐标轴刻度计算基类,因为QCPAxis坐标轴默认使用的就是这个类,其余的坐标轴刻度计算类比如QCPAxisTickerDateTime、QCPAxisTickerTime、QCPAxisTickerFixed、QCPAxisTickerText、QCPAxisTickerPi和QCPAxisTickerLog等都是根据不同业务需求,重新实现了vitural相关方法。

三、坐标轴

1、QCPAxis,如下是QCPAxis的头文件,我从中删除了大量不需要注释的部分,但是很是剩下许多,为了写注释方便所以我没有把代码折叠,有兴趣的同学可以阅读下其中的中文注释,其实这个类仅仅是用来连接计算和绘制坐标轴的一个类,也可以说是暴露给使用者的一个导出类。

1 class QCP_LIB_DECL QCPAxis : publicQCPLayerable2 {3 enum AxisType {//坐标轴类型,在一个坐标轴矩形QCPAxisRect中包含左、上、右和下四条坐标轴

4 atLeft = 0x01 ///< 0x01Axis is vertical and on the left side of the axis rect

5 , atRight = 0x02 ///< 0x02Axis is vertical and on the right side of the axis rect

6 , atTop = 0x04 ///< 0x04Axis is horizontal and on the top side of the axis rect

7 , atBottom = 0x08 ///< 0x08Axis is horizontal and on the bottom side of the axis rect

8 };9 enum LabelSide {//坐标轴刻度上的文本的位置,刻度线里or外

10 lsInside ///< Tick labels will be displayed inside the axis rect and clipped to the inner axis rect11 , lsOutside///< Tick labels will be displayed outside the axis rect12 };

13 enum ScaleType {//坐标轴类型,直线or对数线

14 stLinear ///< Linear scaling15 , stLogarithmic///< Logarithmic scaling with correspondingly transformed axis coordinates (possibly also \ref setTicker to a \ref QCPAxisTickerLog instance).16 };

17 enum SelectablePart {/坐标轴可以被选中的部分18 spNone = 0 ///< None of the selectable parts19 , spAxis = 0x001///< The axis backbone and tick marks20 , spTickLab

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值