QCustomplot基本使用
Posted 林夕07
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QCustomplot基本使用相关的知识,希望对你有一定的参考价值。
简述
QCustomPlot是一个基于Qt C++的图形库,用于绘制和数据可视化 - 制作漂亮的2D图 - 曲线图、趋势图、坐标图、柱状图等,并为实时可视化应用程序提供高性能服务。它没有进一步的依赖关系,并有着良好的文档记录。
QCustomPlot可以导出为各种格式,比如:PDF文件和位图(如:PNG、JPG、BMP)。
可在自己的项目中直接使用两个源文件(qcustomplot.h与qcustomplot.cpp),或预先编译成库。
下载
QCustomPlot首页:http://www.qcustomplot.com/
进入QCustomPlot下载页,下载最新的完整包(包含:源码、文档、示例)!
将下载好的安装包进行解压缩,里面包含文档、示例、更改日志、GPL授权、以及最重要的两个文件qcustomplot.h与qcustomplot.cpp。
使用
首先创建一个正常的mainwindow主窗口带ui的qt的工程,然后将我们上面下载的头文件和源文件都放在这个工程中。
然后在.pro文件中添加一行QT += printsupport
。
再到ui界面添加一个widget,右键提升为QCustomPlot
构造函数中写如下代码。注释已经写的很详细了,此处不再赘述
this->resize(700,700);//设置主窗口大小
QCustomPlot *pCustomPlot = new QCustomPlot(this);//实例化一个对象
pCustomPlot->resize(600, 600);//设置大小
// 可变数组存放绘图的坐标的数据,分别存放x和y坐标的数据,101为数据长度
QVector<double> x(101), y(101);
// 添加数据,这里演示y = x^3,为了正负对称,x从-10到+10
for (int i = 0; i < 101; ++i)//模拟数据
x[i] = i/5 - 10; //一个间距 放五个点
y[i] = qPow(x[i], 3); // x的y次方;
// 向绘图区域QCustomPlot添加一条曲线 必须先有曲线才能添加数据 否则程序异常崩溃
QCPGraph *pGraph = pCustomPlot->addGraph();
// 添加数据
pCustomPlot->graph(0)->setData(x, y);
// 设置坐标轴名称
pCustomPlot->xAxis->setLabel("x");
pCustomPlot->yAxis->setLabel("y");
// 设置背景色
pCustomPlot->setBackground(QColor(50, 50, 50));
// 设置画笔颜色
pGraph->setPen(QPen(QColor(32, 178, 170)));
// 设置x/y轴文本色、轴线色、字体等
pCustomPlot->xAxis->setTickLabelColor(Qt::white);//设置水平的刻度下面的数字颜色
pCustomPlot->xAxis->setLabelColor(QColor(0, 160, 230));//设置水平的坐标轴颜色
pCustomPlot->xAxis->setBasePen(QPen(QColor(32, 178, 170)));//设置水平的刻度颜色(单位是1)
pCustomPlot->xAxis->setTickPen(QPen(QColor(128, 0, 255)));//设置刻度画笔
pCustomPlot->xAxis->setSubTickPen(QColor(255, 165, 0));//设置水平的刻度颜色(单位是0.2)
QFont xFont = pCustomPlot->xAxis->labelFont();//获取水平的坐标轴名称的字体样式
xFont.setPixelSize(20);//设置字体大小
pCustomPlot->xAxis->setLabelFont(xFont);//设置水平的坐标轴名称的字体样式
pCustomPlot->yAxis->setTickLabelColor(Qt::white);//同样的方式设置y轴
pCustomPlot->yAxis->setLabelColor(QColor(0, 160, 230));
pCustomPlot->yAxis->setBasePen(QPen(QColor(32, 178, 170)));
pCustomPlot->yAxis->setTickPen(QPen(QColor(128, 0, 255)));
pCustomPlot->yAxis->setSubTickPen(QColor(255, 165, 0));
QFont yFont = pCustomPlot->yAxis->labelFont();
yFont.setPixelSize(20);
pCustomPlot->yAxis->setLabelFont(yFont);
// 设置坐标轴显示范围,否则只能看到默认范围
pCustomPlot->xAxis->setRange(-11, 11);
pCustomPlot->yAxis->setRange(-1100, 1100);
一个简单的图形就出来了。其他功能将在后序展开。
以上是关于QCustomplot基本使用的主要内容,如果未能解决你的问题,请参考以下文章