【转】QtCharts笔记之QValueAxis

QtCharts笔记之QValueAxis
时间 2016-01-24
标签 QtChart
原文 http://www.voidcn.com/article/p-dzowcfep-ben.html

    QValueAxis是用来自定义图表中的X,Y坐标轴,还是直接看代码分析一下:

#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
#include <QtCharts/QAreaSeries>
#include <QtCharts/QValueAxis>
QT_CHARTS_USE_NAMESPACE
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QLineSeries *series = new QLineSeries();
series->setPen(QPen(Qt::blue,1,Qt::SolidLine));
*series << QPointF(1, 5) << QPointF(3, 7) << QPointF(7, 6) << QPointF(9, 7) << QPointF(12, 6)
<< QPointF(16, 7) << QPointF(18, 5);
QChart *chart = new QChart();
chart->addSeries(series);
chart->setTitle(“Simple example”);
chart->setAnimationOptions(QChart::SeriesAnimations);//设置曲线呈动画显示

QValueAxis *axisX = new QValueAxis; //定义X轴
axisX->setRange(0, 20); //设置范围
axisX->setLabelFormat("%g"); //设置刻度的格式
axisX->setTitleText("X Axis"); //设置X轴的标题
axisX->setGridLineVisible(true); //设置是否显示网格线
axisX->setMinorTickCount(4); //设置小刻度线的数目

// axisX->setLabelsVisible(false); //设置刻度是否显示

QValueAxis *axisY = new QValueAxis;
axisY->setRange(0, 20);
axisY->setTitleText("Y Axis");
axisY->setLabelFormat("%.2f");
axisY->setGridLineVisible(true);

chart->setAxisX(axisX, series);
chart->setAxisY(axisY, series);
chart->legend()->hide();

QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing);

QMainWindow window;
window.setCentralWidget(chartView);
window.resize(400, 300);
window.show();
return a.exec();

}

    代码也是标注得非常明白了,下面要做一些补充和延伸: 
    1. 跟QWT不同,图表中的网格是由坐标轴去处理的。 
    2. 如果你只想定义其中的一个坐标轴,那你必须先调用createDefaultAxes()才去自定义, 不然会出现错误的。 
    3. setLabelFormat就是设置刻度的格式,例如要显示多少位数字等等,下面可以参考一下所有的格式: 

%A 浮点数、十六进制数字和p-记法(C99)
%c 一个字符
%d 有符号十进制整数
%e 浮点数、e-记数法
%E 浮点数、E-记数法
%f 浮点数、十进制记数法
%g 根据数值不同自动选择%f或%e.
%G 根据数值不同自动选择%f或%e.
%i 有符号十进制数(与%d相同)
%o 无符号八进制整数
%p 指针
%s 字符串
%u 无符号十进制整数
%x 使用十六进制数字0f的无符号十六进制整数
%X 使用十六进制数字0f的无符号十六进制整数
%% 打印一个百分号
4. 坐标轴是通过void setTickCount(int count)去设置大刻度线的数目,默认是5,不能小于2,而void setMinorTickCount(int count)是设置小刻度线的数目,小刻度线就是没有刻度的线,这里要注意一下,如果你设成5,就是说明两个大刻度线之间有5条小刻度线,分成了6个小区间,而不是5个小区间。
5. chart->legend()->hide();这里是把图例隐藏,什么叫做图例?图例就是指下图红色框标记的东西,后面会进一步说明这个东西的:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值