QT绘图控件QCustomPlot快速入门(二)
进一步学习QCustomPlot的使用需要参考其帮助文档及官方示例
QCustomPlot源代码中包含其帮助文档,如下所示:
在QtCreator中可以按照下述步骤添加帮助文档
添加曲线的拖拽等操作:
//设置曲线的特性:支持鼠标拖拽、图层缩放、鼠标左键选择图层
MQCustomPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectPlottables);
添加柱状图的绘制功能:
//绘制柱状图
void Widget::on_Button_Bars_clicked()
{
//柱状图的X.Y坐标
QCPAxis *xAxis=MQCustomPlot->xAxis;
QCPAxis *yAxis=MQCustomPlot->yAxis;
QCPBars *bars=new QCPBars(xAxis,yAxis);
bars->setAntialiased(true); //设置抗锯齿
bars->setName("柱状图示例");
bars->setVisible(true);
//设置画笔和画刷
bars->setPen(QPen(Qt::blue));
bars->setBrush(QBrush(QColor(210,255,255)));
//柱状图坐标轴刻度范围与文字
QVector<double>ticks;
QVector<QString>labels;
ticks<<1<<2<<3<<4<<5;
labels<<"小明"<<"小红"<<"张三"<<"李四"<<"小舞";
QSharedPointer<QCPAxisTickerText> tickerText(new QCPAxisTickerText);
tickerText->addTicks(ticks,labels);
xAxis->setTicker(tickerText); //设置坐标轴文字
xAxis->setTickLabelRotation(60); //设置坐标轴文字旋转
xAxis->setSubTicks(false); //不显示子刻度
xAxis->setRange(0,6);
xAxis->setLabel("学生姓名");
xAxis->setUpperEnding(QCPLineEnding::esSpikeArrow);
yAxis->setRange(0,150); //设置y轴范围
yAxis->setPadding(35); //设置y轴内边距
yAxis->setLabel("学习成绩");
yAxis->setUpperEnding(QCPLineEnding::esSpikeArrow);
QVector<double>dataNum;
dataNum<<95<<87<<86<<84<<49;
bars->setData(ticks,dataNum); //给柱状图设置值
MQCustomPlot->replot();
}
添加自动调整坐标轴的功能:
//根据曲线自适应调整坐标
void Widget::on_Button_AutoScale_clicked()
{
MQCustomPlot->rescaleAxes();
MQCustomPlot->replot();
}
效果展示: