QtCharts之QValueAxis类

栏目: 编程工具 · 发布时间: 6年前

内容简介:文章首发自公众号::个人站点:这篇文章主要讲解QValueAxis类的API及其使用。

文章首发自公众号:: nullobject

个人站点: https://www.nullobject.cn

这篇文章主要讲解QValueAxis类的API及其使用。

0x00 关于QValueAxis

QValueAxis ,即数值轴,适用于具有连续数据坐标的图表。QValueAxis作为 QAbstractAxis 的实现类之一,

在继承了QAbstractAxis特性的同时,根据数值轴的特点封装实现了许多方便实用的功能。QValueAxis使用起来也非常简单,在上一篇文章 QAbstractAxis 中的示例代码均是使用QValueAxis实例来说明的。本文主要介绍QValueAxis实现的功能。

QValueAxis使用示例:

#include <QApplication>
#include <QChartView>
#include <QLineSeries>
#include <QValueAxis>
#include <QDebug>

QT_CHARTS_USE_NAMESPACE

int main(int argc, char *argv[])
{
  QApplication a(argc, argv);

  // 创建QChartView对象
  QChartView *chartView = new QChartView;
  chartView->setRenderHint(QPainter::Antialiasing);
  // 创建序列
  QLineSeries *series = new QLineSeries();
  // 隐藏图例
  chartView->chart()->legend()->hide();
  // 添加数据
  series->append(0,2);
  series->append(QPointF(2,6));
  series->append(3,8);
  series->append(7,9);
  series->append(11,3);
  *series << QPointF(11,2) << QPointF(15,5) << QPointF(18,4) << QPointF(19,2);
  // 添加序列到图表
  chartView->chart()->addSeries(series);
  // 创建X轴
  QValueAxis *axisX = new QValueAxis;
  // 设置QValueAxis属性
  axisX->setRange(10, 20.5);
  axisX->setTickCount(5);
  axisX->setLabelFormat("%.2f");
  chartView->chart()->setAxisX(axisX, series);
  // 创建Y轴
  QValueAxis *axisY = new QValueAxis;
  axisY->setRange(0, 10);
  axisY->setTickCount(5);
  axisY->setLabelFormat("%.2f");
  chartView->chart()->setAxisY(axisY, series);
  chartView->resize(400,300);
  chartView->show();
  return a.exec();
}

效果:

QtCharts之QValueAxis类

0x01 设置刻度线

在Qt 5.12版本之前,QValueAxis只支持固定的刻度线设置,只能通过 setTickCount 设置刻度线的数量,刻度线会平均分布在坐标轴。而在Qt最新版本 5.12 版中,QValueAxis支持通过 tickType 属性来设置刻度线为固定分布(TicksFixed)或者是动态分布(TicksDynamic)。

  • QValueAxis::TickType tickType :设置刻度类型
QValueAxis::TickType tickType() const;
void setTickType(QValueAxis::TickType type);

其中TickType为QValueAxis中声明的用于描述刻度类型(刻度线和刻度标签在轴上的位置)的枚举类:

enum TickType {
  TicksDynamic = 0,
  TicksFixed
};

tickType 属性改变时触发 tickTypeChanged(QValueAxis::TickType) 信号

  • TicksFixed 设置刻度位置为均匀分布

QValueAxis默认的刻度类型为 TicksFixed 。将刻度类型设置为TicksFixed,可以通过设置 tickCount 属性值来指定刻度线的数量,此时刻度线会被均匀地地分布在坐标轴上。默认的刻度线数量是 5 条,最低数量不能低于 2 。:

axisY->setRange(0, 10);
axisY->setTickType(QValueAxis::TickType::TicksFixed);
axisY->setTickCount(6);

效果:

QtCharts之QValueAxis类

其中 tickCount 的操作函数声明如下:

int tickCount() const;
void setTickCount(int count);

tickCount属性修改只在 tickType 值为 TicksFixed 时有效。

tickCount 属性改变时触发 tickCountChanged(int) 信号。

  • TicksDynamic 设置刻度位置为动态分布

动态设置刻度的位置,需要通过设置 锚点tickAnchor刻度间距tickInterval 属性值来实现,必须要设置指定 tickInterval 才有效果:

axisY->setRange(0, 10);
axisY->setTickType(QValueAxis::TickType::TicksDynamic);
// 设置刻度间距为3
axisY->setTickInterval(3);
// 设置锚点坐标为5
axisY->setTickAnchor(5);

效果:

QtCharts之QValueAxis类

其中 锚点tickAnchor 属性用于指定刻度线和标签开始绘制的位置, 刻度间距tickInterval 属性用于指定刻度与刻度之间的距离。上示例子中将 tickAnchortickInterval 分别设置为5和3,表示刻度将从坐标为5的位置开始,向轴两端分布,如果不显示设置 tickAnchor ,则默认从坐标轴的起始位置开始分布; tickInterval 的类型为 qreal 类型,支持设置刻度间隔为小数。

修改 tickAnchortickInterval 对应会触发的信号分别为: tickAnchorChanged(int)tickIntervalChanged(qreal)

0x02 设置坐标轴显示范围

QValueAxis通过 maxmin 两个属性来表示坐标轴的最大和最小值,可以通过调用对应的方法来设置坐标轴的显示范围。

  • qreal max :设置坐标轴最大值
qreal max() const;
void setMax(qreal max);

max 属性修改会触发 maxChanged(qreal) 信号。

  • qreal min :设置坐标轴最小值
qreal min() const;
void setMin(qreal min);

min 属性修改会触发 minChanged(qreal) 信号。

  • setRange :设置坐标轴显示范围
void setRange(qreal min, qreal max);

除了可以调用 setMaxsetMin 单独设置坐标轴的极值外,也可以直接调用 setRange 同时设置坐标轴的最大、最小值:

//    axisY->setMin(0);
//    axisY->setMax(10);
// 等价于setRange(0,10);
axisY->setRange(0, 10);

当坐标轴的最大值 max 或者最小值 min 发生改变时,都会触发 rangeChanged(qreal min,qreal max) 信号。

0x03 设置刻度标签显示格式

QValueAxis坐标轴支持通过 labelFormat 属性设置标签的显示格式,例如指定显示小数位数等。

  • QString labelFormat: 设置标签格式
QString labelFormat() const;
void setLabelFormat(const QString &format);

其中传参 format 为需要指定的字符串格式,例如设置为显示小数点后两位数:

axisX->setLabelFormat("%.2f");

目前 labelFormat 支持设置以下转换说明符、长度修饰符以及标准C++库中 printf() 函数提供的格式标志: d , i , o , x , X , f , F , e , E , g , G , c 。具体使用可以百度搜索了解: printf() 输出格式

QtCharts之QValueAxis类

修改该属性会触发 labelFormatChanged(const QString&) 信号。

0x04 The End :)


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

高性能MySQL

高性能MySQL

施瓦茨 (Baron Schwartz)、扎伊采夫 (Peter Zaitsev)、特卡琴科 (Vadim Tkachenko) / 宁海元、周振兴、彭立勋、翟卫祥,刘辉 / 电子工业出版社 / 2013-5-1 / 128.00元

《高性能mysql(第3版)》是mysql 领域的经典之作,拥有广泛的影响力。第3 版更新了大量的内容,不但涵盖了最新mysql 5.5版本的新特性,也讲述了关于固态盘、高可扩展性设计和云计算环境下的数据库相关的新内容,原有的基准测试和性能优化部分也做了大量的扩展和补充。全书共分为16 章和6 个附录,内容涵盖mysql 架构和历史,基准测试和性能剖析,数据库软硬件性能优化,复制、备份和恢复,高可......一起来看看 《高性能MySQL》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

MD5 加密
MD5 加密

MD5 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具