添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

参考文章:https://segmentfault.com/a/1190000022114010

一、QCustuomPlot的分层机制
QCustomPlot的分层系统是控制图中元素渲染顺序的机制。最初,QCustomPlot有五个层:“background”、“grid”、“main”、“axes”和“legend”(按顺序)。最上面两层“轴”和“图例”包含默认轴和图例,因此它们将绘制在顶部。
在这里插入图片描述
中间是“主”层。它最初为空并设置为当前层(请参见QCustomPlot::setCurrentLayer)。默认情况下,将在该图层上创建所有新的打印表、项目等。然后是“grid”层,其中包含QCPGrid实例(它们严格属于QCPAxis,请参见QCPAxis::grid)。AxisRect背景应绘制在其他所有对象的后面,因此默认的QCPAxisRect实例被放置在“背景”层上。当然,可以根据需要更改各个对象的层从属关系(QCPLayerable::setLayer)。
控制对象的顺序很容易:用QCustomPlot::addLayer在想要的位置创建一个新层,例如在“main”上面。然后使用QCustomPlot::setCurrentLayer将当前层设置为新层,最后正常创建对象。由于当前图层设置,它们将自动放置在新图层上。或者,您也可以忽略当前层设置,在创建对象之后,使用qcplayerbable::setLayer将它们移动到所需的层。

也可以移动整个层。例如,如果希望栅格显示在“main”图层上所有绘图表/项目的前面,只需使用QCustomPlot::moveLayer将其移到“main”上方。

一个层中的渲染顺序只是按创建或插入的顺序。 最后创建(或最后添加到图层中)的项目将绘制在该图层上所有其他对象的顶部。

删除图层后,图层上的对象不会随之删除,而是落在已删除图层下方的图层上 ,请参见QCustomPlot::removeLayer。

二、QCPAbstractIte
在这里插入图片描述
QCPAbstractIte 是绘图中所有项的抽象基类。

在QCustomPlot中,项是补充图形元素,既不是绘图表(qcpastractplottable),也不是轴(QCPAxis)。虽然绘图仪始终绑定到两个轴上,因此也可以将项目放置在独立于任何轴的绝对坐标中。每个特定项目至少有一个控制定位的QCPItemPosition成员。有些项由多个坐标定义,因此有两个或多个QCPItemPosition成员(例如,QCPItemRect具有左上角和右下角)。

这个抽象基类定义了一个非常基本的接口,比如可见性和裁剪。因为这个类是抽象的,所以不能实例化。使用其中一个子类或自己创建一个子类来创建新项。

内置项包括:

QCPItemLine : 由起点和终点定义的线。每侧可能有不同的结尾样式(例如箭头)。

QCPItemStraightLine : 由起点和方向点定义的直线。与QCPItemLine不同,直线是无限长的,没有结尾。

QCPItemCurve : 由起点、终点和两个中间控制点定义的曲线。每侧可能有不同的结尾样式(例如箭头)。

QCPItemRect :一个长方形

QCPItemEllipse : 椭圆

QCPItemPixmap :任意像素

QCPItemText :文本标签

QCPItemBracket :一种括号,可以用来参考/突出显示绘图中的某些部分。

QCPItemTracer : 一种可以附加到QCPGraph上并在给定关键坐标的情况下粘在其数据点上的项目

QCPAbstractItem默认存在于QCustomPlot的当前层中,默认的当前层为main,我们可以通过setClipToAxisRect和setClipAxisRect设置Item裁切于某个特定的轴矩形,将setClipToAxisRect设置为false则Item裁切于QCustomPlot

QCPItemPosition继承自QCPItemAnchor,QCPItemAnchor用于给QCPItemPosition定位用的,QCPItemPosition则表示了Item的位置,一个Item可以有多个QCPItemAnchor和QCPItemPosition
我们主要理解QCPItemPosition是如何决定Item的位置的,它有四种位置类型:

ptAbsolute 按像素的方式
ptViewportRatio 按QCustomPlot可视区域的比例
ptAxisRectRatio 按其存在的轴矩形的比例(通过setAxisRect函数设置轴矩形)
ptPlotCoords 按坐标系位置(通过setAxes函数轴)
可以通过setType、setTypeX、setTypeY函数设置x、y方向的位置类型,然后通过setCoords设置其位置,setCoords是跟setType设置的类型相关的,Item的位置还跟它锚定的父锚点QCPItemAnchor相关,可以通过setParentAnchor、setParentAnchorX、setParentAnchorY函数设置x、y方向的父锚点,父锚点决定了其起点位置,当设置父锚点后,type类型会变为ptAbsolute按像素的方式~~~~

我们可以直接通过setPixelPosition设置Item的像素位置,而不用管setType的类型是什么,通过pixelPosition返回Item的像素位置
三、QCPItemTracer

参考文章:https://segmentfault.com/a/1190000022114010一、QCustuomPlot的分层机制QCustomPlot的分层系统是控制图中元素渲染顺序的机制。最初,QCustomPlot有五个层:“background”、“grid”、“main”、“axes”和“legend”(按顺序)。最上面两层“轴”和“图例”包含默认轴和图例,因此它们将绘制在顶部。中间是“主”层。它最初为空并设置为当前层(请参见QCustomPlot::setCurrentLayer)。
QCustomplot 绘制热力图Hotmap时,加矩形框中目标区域 QCP Colormap矩形框绘制 QCP Item Rect 的使用方法说明(废话)解决方案 说明(废话) 这里只是说明我的问题,请寻找解决方案的直接跳到解决方案处查看。 对于我的项目来说,我的热力图有时候需要被某些算法来输出一个矩形,并被标记热力图上的部分目标区域。于是,热力图已经绘制出来,如何绘制矩形是个问题,因为热力图可以通过鼠标放大缩小,这是矩形也应该跟随矩形放大缩小移动位置等。本身热力图就是通过 QcustomPlot 开源代码实现,于是查看其
一、是什么      说起图,大家一下就可能想到折线图、柱状图和饼图等,但是除了这些显眼的东西以外其实还有很多东西辅助的存在着,有了这些辅助的东西图才会看起来有意义,或者说更加的真实、有说服力。这些东西都包括那些呢?首先坐标轴肯定是不能少了的,还有网格线、图例和示意说明等。这一节我们就重点来围绕这个示意说明也就是 QCP Abstract Item 来做以解释 二、效果图      这里我将首先贴张...
1、下载源文件http://www. qcustomplot .com/; 2、把.cpp和.h放在工程目录下,并将cpp和h加入工程; 3、在.pro中: QT += printsupport; 4、在ui中添加一个Widget,右键提升为,输入: QCustomPlot ,改变对象名称为customPlot; 5、加入代码: void MainWindow::initUi() QVecto... m_sameTimeTracer = new QCP Item Tracer(SameTimeCompareCustomPlot); m_sameTimeTracer->setParent(SameTimeCompareCustomPlot); //设置标记点的父类 m_sameTimeTracer-&g...
文章目录 QCP Item Anchor与 QCP Item Position联系与区别 QCP Item Bracket QCP Item Curve QCP Item Text QCP Item Tracer 在 QCustomPlot 中,所有的 Item 都继承自 QCP Abstract Item QCustomPlot 给我们提供了一些 Item QCP Item Bracket 括号 Item QCP Item Curve 曲线 Item ,其实...
Item s:Supplementary graphical elements Item s辅助图形元素 QCustomPlot 允许放置和锚定图形元素比如文本,箭头,线,矢量图形等等。他们是基于抽象基类 QCP Abstract Item 。关于 Item 机制的细节描述和访问内建的 item s可以在 QCP Abstract Item 文档中找到。 使用箭头和文本的简单例子 // add the te
ui->customPlot->legend->setVisible(true); ui->customPlot->legend->setFont(QFont("Helvetica", 9)); ui->customPlot->legend->setTextColor( Qt ::red); 设置图标大小
在QML中使用 QCustomPlot 的曲线/折线示例可以通过以下步骤实现: 首先,确保在项目文件中包含 QCustomPlot 库,并在QML文件中导入 QCustomPlot 库。 在QML文件中,创建一个QML窗口并添加一个 QCustomPlot 对象。然后,创建一个 QCP Graph对象,并将其添加到 QCustomPlot 中。在 QCP Graph对象中,设置数据点并配置曲线的样式、颜色、线宽等属性。 例如,可以在QML中按照以下步骤配置 QCustomPlot 的曲线/折线示例: ```qml import Qt Quick 2.15 import Qt Charts 2.3 Item { id: plotWindow QCustomPlot { id: customPlot anchors.fill: parent // 创建一个曲线对象 QCP Graph { id: graph lineStyle: QCP Graph.LineStyle.lsLine linePen: Qt .rgba(0, 0, 255, 255) // 设置曲线的数据点 data: [ { x: 1, y: 2 }, { x: 2, y: 3 }, { x: 3, y: 1 }, // ... 在这个例子中,我们创建了一个QML窗口并在其中添加了一个 QCustomPlot 对象。然后,我们在 QCustomPlot 中创建了一个 QCP Graph对象,并通过设置data属性来定义曲线的数据点。最后,我们设置了曲线的样式和颜色。 通过以上步骤,就可以在QML中使用 QCustomPlot 来绘制曲线/折线示例。同时,可以根据具体需求进一步定制曲线的样式和属性,以实现更加丰富多彩的数据可视化效果。