QCPItemTracer 追踪者Item
QCPAbstractItem
默认存在于
QCustomPlot
的当前层中,默认的当前层为
main
,我们可以通过
setClipToAxisRect
和
setClipAxisRect
设置Item裁切于某个特定的轴矩形,将
setClipToAxisRect
设置为false则Item裁切于
QCustomPlot
QCPItemAnchor与QCPItemPosition联系与区别
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的像素位置
以下图片空心圆为QCPItemAnchor,实心圆为QCPItemPosition
QCPItemBracket
QCPItemCurve
可以看到QCPItemCurve有四个点决定其位置起点
start
和终点
end
以及两个控制点
startDir
、
endDir
,理解QCPItemCurve的位置需要我们对贝塞尔曲线有所理解
QCPItemText
QCPItemText
可以看到QCPItemText由
position
决定其位置,但是
position
不一定是在文字中心的位置,我们可以通过
setPositionAlignment
设置
position
对齐在文字的哪一个地方,比如要对齐在
topLeft
的位置:setPositionAlignment(Qt::AlignLeft)
QCPItemTracer
tracer是比较常用的一个Item,它主要用来实时跟踪
QCPGraph
的某个数据点,QCPItemTracer也是用一个
position
来决定其位置