前言
QCustomPlot是基于Qt的一个轻量级的第三方图表类,完全开源的代码,无需导入任何库,使用起来方便且高效。
此外,QCustomPlot还很贴心的发布了很多Demo程序。基于这些Demo,再结合实际工程需要,我在QCustomPlot基础上二次封装一些工程实践时比较常见的界面类库,力求做到简单易用,有需要的同学可以直接下载。
今天我要实现的是多数值柱形图显示,适用于同类不同数值的界面显示,比如:
一个机器设备上有若干电机,每个电机上装有温度传感器,我们就可以用通过一张这种图表来显示每一个传感器传来的温度。
废话少说,直入正题。
QCustomPlot的安装和使用
QCustomPlot是我遇到的最方便安装的第三方库了,具体安装方法非常简单,可以看我这篇文章有介绍,这里就不再重复了。
关键代码的实现
首先我们新建一个Qt设计师界面类,选择Widget类型,我将其命名为SingleKindDatasBarsShowForm然后我们在其上面拖拽一个Widget,将其提升为QCustomPlot类。
提升完毕后,我们要写一个对这个图表的设置函数,将其设置为柱形图显示类。
void SingleKindDatasBarsShowForm::SetValueState(QVector<QString> temp_title_list, QColor color, QString unit)
{
title_list.clear();
int count=temp_title_list.count();
bar_count=count;
if(count<=0)
{
return;
}
//新建一个bar系列
data_bars = new QCPBars(ui->widget->xAxis, ui->widget->yAxis);
data_bars->setAntialiased(false);
data_bars->setPen(color.lighter(150));
data_bars->setBrush(color);
x_ticks.clear();
for(int i=0;i<count;i++)
{
title_list.append(temp_title_list.at(i));
x_ticks.append(i+1);
}
//根据标题列表初始化x轴
QSharedPointer<QCPAxisTickerText>