当前位置: 首页 > news >正文

QCPAxis、QCPGrid 和 QCPAxisTicker 三者关系

在 QCustomPlot 中,QCPAxisQCPGrid 和 QCPAxisTicker 三者协同工作,共同构成坐标轴系统的完整功能。它们的关系可以通过以下层次和交互来理解:

1. 核心关系

关键设计特点

  1. 单向依赖

    • QCPGrid 是 QCPAxis 的成员,无法独立存在。

    • QCPAxisTicker 通过智能指针由 QCPAxis 持有,但逻辑解耦(可自定义派生类)。

  2. 自动同步机制

    • 修改 QCPAxis 的范围或样式时,关联的 QCPGrid 和 QCPAxisTicker 会自动响应(如重绘网格、重新计算刻度)。

  3. 扩展性

    • 通过继承 QCPAxisTicker 可实现自定义刻度逻辑(如对数刻度、文本标签刻度等)。

    • QCPGrid 的样式完全由 QCPAxis 控制,无需直接操作。

 

2. 分工与依赖关系

角色依赖关系典型访问方式
QCPAxis坐标轴本体,管理范围、标签、样式1. 持有 QCPGrid 对象
2. 通过 setTicker() 绑定 QCPAxisTicker
customPlot->xAxis / yAxis
QCPGrid绘制与坐标轴对齐的网格线完全依附于 QCPAxis(不能独立存在)axis->grid()
QCPAxisTicker生成刻度和标签的逻辑被 QCPAxis 持有(通过智能指针),可独立实现不同刻度策略axis->setTicker(shared_ptr)

3. 交互流程示例

4. 协作流程示例

(1) 初始化坐标轴系统

cpp

// 创建主图
QCustomPlot *customPlot = new QCustomPlot;// 获取X轴并设置范围
QCPAxis *xAxis = customPlot->xAxis;
xAxis->setRange(0, 10);
xAxis->setLabel("时间轴");// 配置网格线(通过QCPAxis访问QCPGrid)
xAxis->grid()->setPen(QPen(Qt::gray, 1, Qt::DotLine));  // 虚线网格
xAxis->grid()->setSubGridVisible(true);                 // 显示子网格// 设置刻度生成器(QCPAxisTickerDateTime为派生类)
QSharedPointer<QCPAxisTickerDateTime> dateTicker(new QCPAxisTickerDateTime);
dateTicker->setDateTimeFormat("hh:mm:ss");
xAxis->setTicker(dateTicker);  // 绑定到X轴
(2) 动态交互

cpp

// 当坐标轴范围变化时,网格线和刻度自动同步更新
connect(xAxis, &QCPAxis::rangeChanged, [](const QCPRange &newRange) {qDebug() << "新范围:" << newRange.lower << "-" << newRange.upper;// QCPGrid会根据新范围重绘网格// QCPAxisTicker会重新生成刻度
});// 手动触发重新生成刻度(例如切换时间格式)
dateTicker->setDateTimeFormat("MM-dd");
customPlot->replot();
http://www.xdnf.cn/news/54343.html

相关文章:

  • 关于隔离2:ADC芯片
  • 京东 h5st 5.1 详情 京东滑块 cfe 分析
  • Cursor工具你会用了吗
  • leetcode0078. 子集-medium
  • stm32 13位时间戳转换为时间格式、对时
  • Day58 | 179. 最大数、316. 去除重复字母、334. 递增的三元子序列
  • Linux系统的远程终端登录、远程图形桌面访问、 X图形窗口访问
  • 无回显RCE
  • 每日一道leetcode(补充版)
  • 具身智能零碎知识点(四):联合嵌入预测架构(JEPAs)详解
  • acwing--动态规划【线性dp】4/20、4/21
  • 网页的URL绝对路径和相对路径,以及各自的使用场景
  • 【Vulkan 入门系列】创建逻辑设备和图形、呈现队列,显示尺寸更改(三)
  • 错误: 找不到或无法加载主类 HelloWorld,cmd窗口,java命令,提示
  • PT站中的tracker
  • LangChain4j语言模型选型指南:主流模型能力全景对比
  • 生成式AI对话中提示词策略:明确问题、明确目标和提供背景信息是最有效的策略
  • 【CPU】中断即时性
  • leetcode(01)森林中的兔子
  • 机器学习(神经网络基础篇)——个人理解篇6(概念+代码)———参数优化篇
  • 模型上下文协议(MCP)详解
  • 【物理学】物理学——电机控制中常用的定则
  • AI 中的 CoT 是什么?一文详解思维链
  • select、poll、epoll实现多路复用IO并对比差异
  • C++类继承关键点总结
  • 模拟实现strcmp,strcpy,strlen,strcat,strstr
  • 类转换与强制类型转换详解
  • 双目视觉中的动态畸变矫正与跨视角信息融合
  • SmolVLM2: The Smollest Video Model Ever(五)
  • C与C++的区别