内容简介:文章首发自公众号::个人站点:这篇文章主要讲解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();
}
效果:
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);
效果:
其中 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);
效果:
其中 锚点tickAnchor 属性用于指定刻度线和标签开始绘制的位置, 刻度间距tickInterval 属性用于指定刻度与刻度之间的距离。上示例子中将 tickAnchor 和 tickInterval 分别设置为5和3,表示刻度将从坐标为5的位置开始,向轴两端分布,如果不显示设置 tickAnchor ,则默认从坐标轴的起始位置开始分布; tickInterval 的类型为 qreal 类型,支持设置刻度间隔为小数。
修改 tickAnchor 和 tickInterval 对应会触发的信号分别为: tickAnchorChanged(int) 和 tickIntervalChanged(qreal) 。
0x02 设置坐标轴显示范围
QValueAxis通过 max 和 min 两个属性来表示坐标轴的最大和最小值,可以通过调用对应的方法来设置坐标轴的显示范围。
- 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);
除了可以调用 setMax 或 setMin 单独设置坐标轴的极值外,也可以直接调用 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() 输出格式 。
修改该属性会触发 labelFormatChanged(const QString&) 信号。
0x04 The End :)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
高性能MySQL
施瓦茨 (Baron Schwartz)、扎伊采夫 (Peter Zaitsev)、特卡琴科 (Vadim Tkachenko) / 宁海元、周振兴、彭立勋、翟卫祥,刘辉 / 电子工业出版社 / 2013-5-1 / 128.00元
《高性能mysql(第3版)》是mysql 领域的经典之作,拥有广泛的影响力。第3 版更新了大量的内容,不但涵盖了最新mysql 5.5版本的新特性,也讲述了关于固态盘、高可扩展性设计和云计算环境下的数据库相关的新内容,原有的基准测试和性能优化部分也做了大量的扩展和补充。全书共分为16 章和6 个附录,内容涵盖mysql 架构和历史,基准测试和性能剖析,数据库软硬件性能优化,复制、备份和恢复,高可......一起来看看 《高性能MySQL》 这本书的介绍吧!