qcustomplot使用分享qcpabstractitem

朝十晚八 朝十晚八     2022-08-13     591

关键词:

一、是什么

     说起图,大家一下就可能想到折线图、柱状图和饼图等,但是除了这些显眼的东西以外其实还有很多东西辅助的存在着,有了这些辅助的东西图才会看起来有意义,或者说更加的真实、有说服力。这些东西都包括那些呢?首先坐标轴肯定是不能少了的,还有网格线、图例和示意说明等。这一节我们就重点来围绕这个示意说明也就是QCPAbstractItem来做以解释

二、效果图

     这里我将首先贴张效果图,主要是为了展示QCPAbstractItem的用途,有需要的同学可以深入的了解下。图上出了一条折线之外,还有坐标轴、网格线和图例,那么下一小节我将会重点的来说这个示意说明都有哪些。

图1 QCPAbstractItem示例

三、代码解读

1、说这些示意类前,我先给大家介绍一个类QCPItemPosition,这个是描述位置的一个类,示意项都是包含了这个类才具有位置信息,那么这个类有什么妙用呢,呵呵呵。。。那就要问他的成员PositionType枚举了,这个枚举有4个值,接下类我分别介绍下:

  • ptAbsolute:Static positioning in pixels, starting from the top left corner of the viewport/widget.该值为默认值,根据像素设置位置,从视口的左上角开始算起
  • ptViewportRatio:Static positioning given by a fraction of the viewport size. For example, if you call setCoords(0, 0), the position will be at the top
     left corner of the viewport/widget. setCoords(1, 1) will be at the bottom right corner, setCoords(0.5, 0) will be horizontally centered and
     vertically at the top of the viewport/widget, etc.按比例设置,依赖于视口大小
  • ptAxisRectRatio:Static positioning given by a fraction of the axis rect size (see \ref setAxisRect). For example, if you call setCoords(0, 0), the position will be at the top left corner of the axis rect. setCoords(1, 1) will be at the bottom right corner, setCoords(0.5, 0) will be horizontally centered and vertically at the top of the axis rect, etc. You can also go beyond the axis rect by providing negative coordinates or coordinates larger than 1.按比例设置位置,依赖于坐标轴矩形大小,区别于按视口大小
  • ptPlotCoords:Dynamic positioning at a plot coordinate defined by two axes (see \ref setAxes).依赖于两个坐标轴

    看到上述4个枚举,小伙伴应该猜到他是什么意思了吧,没错他就是表明这个位置信息被解析的一种方式

2、接下来我们来看一下到底有哪些示意说明

  • 直线(QCPItemStraightLine):直线,顾名思义就是给定两个点他会无限延伸,他使用了两个QCPItemPosition变量来存储位置
  • 线段(QCPItemLine):比对于直线,线段就是一段,而不是两端自动延长
  • 曲线(QCPItemCurve):参数线,如图1种的带箭头曲线
  • 矩形(QCPItemRect):
  • 椭圆(QCPItemEllipse)
  • 文本(QCPItemText):图1中所有的文本描述都来自这个类,可能有的同学会问,为什么右侧的两个文本框有左侧的垂直线,其实他不是文本框的,而是那条带箭头的线尾部的一种装饰。
  • 小圆球(QCPItemTracer):如图1种所示的红色和绿色实心圆
  • 图片(QCPItemPixmap)
  • 括弧(QCPItemBracket):如图1种Wavepacket表示的垂直右大括号

3、QCustomPlot提供了不少的示意类,接下来我说下QCPItemText和QCPItemCurve

    QCPItemText示意代码如下:

1     QCPItemText *phaseTracerText = new QCPItemText(ui.widget_18);//构造一个文本
2     ui.widget_18->addItem(phaseTracerText);//添加到图
3     phaseTracerText->position->setType(QCPItemPosition::ptAxisRectRatio);//设置文本坐标解析方式,前文中有提到QCPItemPosition类的PositionType枚举
4     phaseTracerText->setPositionAlignment(Qt::AlignRight | Qt::AlignBottom);//设置位置在矩形区域的位置
5     phaseTracerText->position->setCoords(1.0, 0.95); // 设置位置,注意第三行代码的枚举类型和这儿的值解析方式有关系
6     phaseTracerText->setText("Points of fixed\nphase define\nphase velocity vp");//文本描述
7     phaseTracerText->setTextAlignment(Qt::AlignLeft);//设置文本在矩形区域的位置
8     phaseTracerText->setFont(QFont(font().family(), 9));//设置文本的字体
9     phaseTracerText->setPadding(QMargins(8, 0, 0, 0));//设置文本所在矩形的margins

    QCPItemCurve示意代码如下:

 1     QCPItemCurve *phaseTracerArrow = new QCPItemCurve(ui.widget_18);//构造一个带参数线
 2     ui.widget_18->addItem(phaseTracerArrow);//添加到图中
 3     phaseTracerArrow->start->setParentAnchor(phaseTracerText->left);//曲线的开始点为文本的左位置
 4     phaseTracerArrow->startDir->setParentAnchor(phaseTracerArrow->start);//同步自身的锚点
 5     phaseTracerArrow->startDir->setCoords(-40, 0); // x轴偏移40个像素
 6     phaseTracerArrow->end->setParentAnchor(phaseTracer->position);//曲线的结束点为实心圆的位置
 7     phaseTracerArrow->end->setCoords(10, 10);//偏移
 8     phaseTracerArrow->endDir->setParentAnchor(phaseTracerArrow->end);//同步自身的锚点
 9     phaseTracerArrow->endDir->setCoords(30, 30);//偏移
10     phaseTracerArrow->setHead(QCPLineEnding::esSpikeArrow);//设置首部形状(箭头)
11     phaseTracerArrow->setTail(QCPLineEnding(QCPLineEnding::esBar, (phaseTracerText->bottom->pixelPoint().y() - phaseTracerText->top->pixelPoint().y())*0.85));//设置尾部形状(一条竖线)

四、相关链接

  QCustomplot使用分享(一) 能做什么事

  QCustomplot使用分享(二) 源码解读

  QCustomplot使用分享(三) 图

 

 

如果您觉得文章不错,不妨给个打赏,写作不易,感谢各位的支持。您的支持是我最大的动力,谢谢!!! 

 

  


很重要--转载声明

  1. 本站文章无特别说明,皆为原创,版权所有,转载时请用链接的方式,给出原文出处。同时写上原作者:朝十晚八 or Twowords
  2. 如要转载,请原文转载,如在转载时修改本文,请事先告知,谢绝在转载时通过修改本文达到有利于转载者的目的。 

qcustomplot使用分享坐标轴和网格线

一、概述   前边已经写了5篇对QCustomPlot的讲解,看过上述的几篇文章后,基本就能做一些简单的使用了,但是如果想要做到高度的控制图表,那么坐标轴将是很重要的一部分,因为坐标轴就是图表的一个参考系,没有... 查看详情

qcustomplot使用分享qcpabstractitem

一、是什么    说起图,大家一下就可能想到折线图、柱状图和饼图等,但是除了这些显眼的东西以外其实还有很多东西辅助的存在着,有了这些辅助的东西图才会看起来有意义,或者说更加的真实、有说服力。这... 查看详情

qtvs2017+qt使用qcustomplot绘图(代码片段)

文章目录1.前言2.下载QCustomPlot的源码3.将QCustomPlot添加到QT项目4.移植QCustomPlotDemo中的plots5.移植过程出现的问题5.测试demo完整工程1.前言QCustomPlot是一个超强超小巧的qt绘图类,非常漂亮,非常易用,只需要加入一个qcusto... 查看详情

qtvs2017+qt使用qcustomplot绘图(代码片段)

文章目录1.前言2.下载QCustomPlot的源码3.将QCustomPlot添加到QT项目4.移植QCustomPlotDemo中的plots5.移植过程出现的问题5.测试demo完整工程1.前言QCustomPlot是一个超强超小巧的qt绘图类,非常漂亮,非常易用,只需要加入一个qcusto... 查看详情

如何有效地使用 QCustomPlot 绘制大型时间序列?

】如何有效地使用QCustomPlot绘制大型时间序列?【英文标题】:HowtoplotlargetimeserieswithQCustomPlotefficiently?【发布时间】:2014-12-1107:44:52【问题描述】:我目前正在使用QCustomPlot在Qt中绘制数字信号,但似乎当样本数大于10000000时,操... 查看详情

qt使用qcustomplot开发

一、入门1、下载源文件http://www.qcustomplot.com/;2、把.cpp和.h放在工程目录下,并将cpp和h加入工程;3、在.pro中:QT+=printsupport;4、在ui中添加一个Widget,右键提升为,输入:QCustomPlot,改变对象名称为customPlot;5、加入代码:voidMain... 查看详情

qcustomplot基本使用(代码片段)

文章目录简述下载使用简述QCustomPlot是一个基于QtC++的图形库,用于绘制和数据可视化-制作漂亮的2D图-曲线图、趋势图、坐标图、柱状图等,并为实时可视化应用程序提供高性能服务。它没有进一步的依赖关系,... 查看详情

qcustomplot版本迭代日志(代码片段)

使用QCustomPlot绘图库辅助开发时整理的学习笔记。本篇总结QCustomPlot在各版本中的更新要点。说明使用QCustomPlot绘图库辅助开发时整理的学习笔记。本篇总结QCustomPlot在各版本中的更新要点,详细更新日志可查看QCustomPlot更新日志... 查看详情

使用qt绘图控件qcustomplot绘制波形图(代码片段)

...受到的数据通过曲线显示出来,其实这是用一个叫做QCustomPlot的控件,这个控件不是QT自带的,需要自己下载加入,今天介绍一下这个控件的使用方法,并附源码。QCustomPlot简介QCustomPlot是开源的Qt的第三方绘图... 查看详情

使用qt绘图控件qcustomplot绘制波形图(代码片段)

...受到的数据通过曲线显示出来,其实这是用一个叫做QCustomPlot的控件,这个控件不是QT自带的,需要自己下载加入,今天介绍一下这个控件的使用方法,并附源码。QCustomPlot简介QCustomPlot是开源的Qt的第三方绘图... 查看详情

qt绘图插件qcustomplot下载安装配置使用

一、配置QCustomPlot官方下载地址:http://www.qcustomplot.com/index.php/download650)this.width=650;"src="http://img.blog.csdn.net/20151010144651708?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fonts 查看详情

MSVS2012 中的 QCustomPlot

】MSVS2012中的QCustomPlot【英文标题】:QCustomPlotinMSVS2012【发布时间】:2015-04-0811:12:26【问题描述】:我成功地在VisualStudio2012中构建了一个无需插件即可运行QT的程序。我包含了QT包含文件夹并手动将库添加到资源中。它编译并运行... 查看详情

qcustomplot使用——绘制折线图

//初始化数据QVector<double>temp;for(intvar=0;var<25;++var)if(rand()%2)temp.append(var);elsetemp.append(20);QVector<double>time;for(intvar=0;var<25;++var)time.appen 查看详情

QCustomPlot:如何更新图表的数据?

】QCustomPlot:如何更新图表的数据?【英文标题】:QCustomPlot:Howtoupdatedataofagraph?【发布时间】:2016-04-0222:33:14【问题描述】:我使用QCustomPlot来显示图片的直方图。我用来设置a曲线的函数如下:voidSingleHistogram::setHist(constQVector<d... 查看详情

qcustomplot的使用以及编译动态链接库的过程

#ifndef _HLM_GRAPH_H_#define _HLM_GRAPH_H_#include <qcustomplot.h>class hlm_temp_Graph : public QWidget{public:    explicit hlm_temp_G 查看详情

QCustomPlot 重新绘制 QCPLayer

】QCustomPlot重新绘制QCPLayer【英文标题】:QCustomPlotreplotQCPLayer【发布时间】:2018-03-2516:03:44【问题描述】:我正在尝试弄清楚如何使用QCPLayer仅重新绘制图中的某些项目。qcustomplotdocumentation声明如下:如果你经常需要调用一个完... 查看详情

QCustomPlot 海量数据绘图

】QCustomPlot海量数据绘图【英文标题】:QCustomPlotHugeAmountofDataPlotting【发布时间】:2017-03-1123:45:23【问题描述】:我正在尝试使用qcustomplot类在我的QtGui程序上绘制一些串行数据。当我尝试绘制100个数据/秒的低采样频率数据时,我... 查看详情

qtwidget使用qcustomplot库实现二维螺旋曲线(螺旋曲线一)(代码片段)

文章目录一、要实现的螺旋曲线二、方程式:三、QCustomPlot图形库运用四、关键代码GitHub源码:    QWidgetLearningProQT其它文章请点击这里:    QT学习笔记姊妹篇:    QtQML在Map中使用实现二维螺旋曲线(螺旋曲线二)... 查看详情