同时发布在http://blog.csdn.net/laixuepu/article/details/78825257
QCustomplot学习使用分享
QCustomplot网上和例子都是在资源和头文件中加入qcustomplot.h和qcustomplot.cpp,然后在.ui中添加Widget,然后提升为QCustomplot,然后重新命名,在mainwindow中调用,很少有使用纯代码添加的。纯代码的好处肯定不用我讲吧。下边就将我的例子分享给大家,供自己以后能找到,也分享给大家。
1.首先新建工程,
一路下一步,然后选择QWidget
将从官网下载的QCustomplot文件中的以QCustomplot.h,QCustomplot.cpp下两个文件拷到工程文件夹下
点击工程右键,添加现有文件,将这两个文件添加到工程。
然后将以下代码复制到Widget.h跟Widget.cpp文件内。运行。
Widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include"qcustomplot.h"
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
void zPlotterWidgetInit();
~Widget();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
Widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
setGeometry(QRect(30,30,650,450));
zPlotterWidgetInit();
}
void Widget::zPlotterWidgetInit()
{
QCustomPlot *preplot = new QCustomPlot(this);
//设置绘图窗口大小,以下两个都可以
//preplot->setFixedSize(480,300);
preplot->setGeometry(QRect(30,30,650,350));
//可拖拽+可滚轮缩放
preplot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectPlottables);
preplot->xAxis->setVisible(true); //设置需要显示的坐标轴x
preplot->yAxis->setVisible(true); //设置需要显示的坐标轴y
preplot->xAxis2->setVisible(true); //设置需要显示的坐标轴x2
preplot->yAxis2->setVisible(true); //设置需要显示的坐标轴y2
preplot->xAxis->setRange(0, 100); //x轴的范围
preplot->yAxis->setRange(0, 10); //y轴的范围
preplot->xAxis2->setRange(0, 100); //x2轴的范围
preplot->yAxis2->setRange(0, 10); //y2轴的范围
preplot->xAxis->setLabel("xAxis1"); //x1轴名称
preplot->yAxis->setLabel("yAxis1"); //y1轴名称
preplot->xAxis2->setLabel("xAxis2"); //x2轴名称
preplot->yAxis2->setLabel("yAxis2"); //y2轴名称
preplot->xAxis->setTickLabels(true); //x1轴坐标刻度
preplot->yAxis->setTickLabels(true); //y1轴坐标刻度
preplot->xAxis2->setTickLabels(true); //x2轴坐标刻度
preplot->yAxis2->setTickLabels(true); //y2轴坐标刻度
//为坐标轴添加箭头
// preplot->xAxis->setUpperEnding(QCPLineEnding::esSpikeArrow);
// preplot->yAxis->setUpperEnding(QCPLineEnding::esSpikeArrow);
// preplot->xAxis2->setUpperEnding(QCPLineEnding::esSpikeArrow);
// preplot->yAxis2->setUpperEnding(QCPLineEnding::esSpikeArrow);
//坐标系反转
// preplot->xAxis->setRangeReversed(true);
// preplot->yAxis->setRangeReversed(true);
// preplot->xAxis2->setRangeReversed(true);
// preplot->yAxis2->setRangeReversed(true);
preplot->addGraph();
preplot->addGraph();
preplot->graph(0)->setPen(QPen(Qt::blue)); //曲线1颜色
preplot->graph(0)->setName(("name1")); //曲线1名称
preplot->graph(1)->setPen(QPen(Qt::red)); //曲线2颜色
preplot->graph(1)->setName(("name2")); //曲线2名称
preplot->legend->setVisible(true); //显示图例缩略图
preplot->legend->setFont(QFont("Helvetica",9));
preplot->legend->setBrush(QBrush(QColor(255,255,255,210)));//210透明度
preplot->legend->setSelectableParts(QCPLegend::spItems);
preplot->axisRect()->insetLayout()->setInsetAlignment(0, Qt::AlignTop|Qt::AlignRight);//标签位置
for(double i=0;i<100;i++)
{
preplot->graph(0)->addData(i, i/50);
preplot->graph(1)->addData(i, i*i/50);
}
}
Widget::~Widget()
{
delete ui;
}
运行,运行结果如下图
如果有什么不对的地方希望大家指正。
然后QCustomplot还有很多功能,此处只是刚刚入门的一些东西。自己编写,实际可用。