1、下载源文件http://www.qcustomplot.com/;
2、把.cpp和.h放在工程目录下,并将cpp和h加入工程;
3、在.pro中:QT += printsupport;
4、在ui中添加一个Widget,右键提升为,输入:QCustomPlot,改变对象名称为customPlot;
void Widget::initUI()
{
QVector<double> x(101), y(101);
for (int i=0; i<101; ++i)
{
x[i] = i/50.0 - 1; // x goes from -1 to 1
y[i] = x[i]*x[i]; // let's plot a quadratic function
}
ui->widget->addGraph();// 添加数据曲线(一个图像可以有多个数据曲线),graph(0);可以获取某个数据曲线(按添加先后排序);默认x1,y1轴
ui->widget->addGraph(ui->widget->xAxis,ui->widget->yAxis2);//添加的曲线以x1,y2为基准轴
ui->widget->graph(0)->setData(x, y);// setData();为数据曲线关联数据
ui->widget->xAxis->setLabel("x");// 为坐标轴添加标签
ui->widget->yAxis->setLabel("y");
ui->widget->xAxis->setRange(-1, 1);// 设置坐标轴的范围,以看到所有数据
ui->widget->yAxis->setRange(-1, 1);
ui->widget->replot();// 重画图像
ui->widget->rescaleAxes();//自动设置最合适的显示范围
ui->widget->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom);//可移动可拖放
// //ui->widget->graph(0)->addData(double,double);//追加点
// int showTime=60;//60秒
// QDateTime dateTime = QDateTime::currentDateTime();
// double now = dateTime.toTime_t();
// QSharedPointer<QCPAxisTickerDateTime> xTicker(new QCPAxisTickerDateTime);
// xTicker->setTickCount(2);
// xTicker->setDateTimeFormat("yyyy.MM.dd-hh:mm");//
// ui->widget->xAxis->setTicker(xTicker);
// xTicker->setTickStepStrategy(QCPAxisTicker::tssMeetTickCount);
// ui->widget->xAxis->setRange(now-showTime,now+showTime);//显示多久的数据,前后60秒
// ui->widget->xAxis->setTickLabelRotation(60); //设置刻度label旋转
// ui->widget->xAxis->setRangeReversed(false);//x轴反向
// QDateTime dateTime1 = QDateTime::currentDateTime();
// double as = dateTime1.toTime_t();
// QSharedPointer<QCPAxisTickerDateTime> yTicker(new QCPAxisTickerDateTime);
// yTicker->setTickCount(2);
// yTicker->setDateTimeFormat("yyyy.MM.dd-hh:mm");//
// ui->widget->xAxis->setTicker(yTicker);
// yTicker->setTickStepStrategy(QCPAxisTicker::tssMeetTickCount);
// ui->widget->xAxis->setRange(as-3600,as+3600);//显示3个小时的数据
}
链接:Qt使用QCustomPlot开发 - 朱小勇 - 博客园 (cnblogs.com)