0 引入
使用customplot时候,绘制多条曲线的时候,需要对曲线删除,隐藏在增加,其自带的图列不太好看,自己就在QT中重新设计了以自定义的图例
1、问题
光网自带的图列如图所示,不带隐藏和删除功能,当然这些功能也能实现,隐藏的时候还会留下空位,不好看,删除的话就比较麻烦。
所以如何在QT中自定义一款自己的图例???
常用的官方增加图例的代码
ui->widget->setInteractions(QCP::iSelectPlottables); //数据可选
ui->widget->legend->setSelectableParts(QCPLegend::spItems);
ui->widget->legend->setVisible(true);
ui->widget->legend->setFont(QFont("Helvetica", 9));
ui->widget->legend->setRowSpacing(-3);
2、方法
需求:0、最多显示10条曲线,并且初始颜色固定
1、可以隐藏某条曲线
2、可以删除曲线,删除后该曲线颜色还使用;
…
1.设计
为了使画面看起来比较和谐,一般来说图例都在右上角。为了增加和删除保持布局的和谐,一般来说我把每一个 0———X作为一个widget,然后再右上角放一个垂直布局。
2.程序思路
1、布局如上所述, 0———X控件需要重绘事件,画那条线,然后隐藏和删除加上两个信号;
2、增加一条曲线的时候,设置其颜色,就会new一个上诉自定义的widget,并且它一个身份id;
3、隐藏的时候就是隐藏信号绑定一个槽函数,在则会个槽函数里面去判定那个widget需要隐藏;
4、删除和重复使用,需要一个队列(QDeque),原始队列放了10条曲线,用一条把从队首删去一个,删除的时候需要再队尾加上删除的曲线,这样就可以循环使用所有的曲线;
5、特别注意,删除曲线的时候数据结构中含有指针的情况,必须手动去delete,使用数据结构自带的方法是不可行的。
3、总结
上述方法最终是可行,我花了一上午编写到调试,是没有问题的,具体看最上面的那张图。