实际上在Qt上绘制线图(数据),原理很简单,控件搭配也挺宜用(Q-Chart-View、Q-Chart、Q-Line-Series),附加额外的坐标、布局、颜色、背景等
QChart* chart_; QChartView* view_; QSplineSeries *seris; QGridLayout* baseLayout; QValueAxis *xAxis; QValueAxis *yAxis;
层层嵌套,主要考虑的是的是数据的填充、坐标轴实时适应、选定区域放大,当然,也是最基本的操作
CHART-VIEW支持选定区域放大属性,而且是一句代码实现,当然,限制就是具备特定的操作,不是想怎么办就怎么办
view_->setRubberBand(QChartView::HorizontalRubberBand);
数据填充其实不需要事先设定数据量,因为SERIES本身是个容器,动态扩展的(数据结构),直接附加就行,再一次显示时,先清除容器,再添加、显示即可
for(int i=0;i<nfft/2;i++) { seris->append(ret.x[i],ret.y[i]); }
seris->clear();
坐标轴实时更新(伴随数据操作,目的是显示更加的直观),这个也是一行代码解决,利用坐标轴的属性
xAxis->setRange(min_x,max_x); yAxis->setRange(min_y,max_y);
double min_x,max_x; double min_y,max_y; min_x = max_x = ret.x[0]; min_y = max_y = ret.y[0]; for(int i=0;i<fs;i++) { //separate for x if(min_x>ret.x[i]) { min_x = ret.x[i]; } if(max_x<ret.x[i]) { max_x = ret.x[i]; } //separate for y if(min_y>ret.y[i]) { min_y = ret.y[i]; } if(max_y<ret.y[i]) { max_y = ret.y[i]; } }
https://faststone-image-viewer.en.softonic.com/
Fast-Stone Image Viewer很强大,功能还需要自己体会体会!