美文网首页Qt
QCustomPlot之Item(十)

QCustomPlot之Item(十)

作者: 梁如风 | 来源:发表于2020-03-23 13:28 被阅读0次

    在QCustomPlot中,所有的Item都继承自QCPAbstractItem,QCustomPlot给我们提供了一些Item

    QCustomPlot中所有的Item
    • QCPItemBracket 括号Item
    • QCPItemCurve 曲线Item,其实就是贝塞尔曲线
    • QCPItemEllipse 椭圆/圆Item
    • QCPItemLine 线段Item
    • QCPItemPixmap 图片Item
    • QCPItemRect 矩形Item
    • QCPItemStraightLine 直线Item
    • QCPItemText 文字Item
    • QCPItemTracer 追踪者Item

    QCPAbstractItem默认存在于QCustomPlot的当前层中,默认的当前层为main,我们可以通过setClipToAxisRectsetClipAxisRect设置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函数轴)

    可以通过setTypesetTypeXsetTypeY函数设置x、y方向的位置类型,然后通过setCoords设置其位置,setCoords是跟setType设置的类型相关的,Item的位置还跟它锚定的父锚点QCPItemAnchor相关,可以通过setParentAnchorsetParentAnchorXsetParentAnchorY函数设置x、y方向的父锚点,父锚点决定了其起点位置,当设置父锚点后,type类型会变为ptAbsolute按像素的方式

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

    以下图片空心圆为QCPItemAnchor,实心圆为QCPItemPosition

    QCPItemBracket

    QCPItemBracket
    可以看到QCPItemBracket通过leftright决定其位置,而center则用于给其它的QCPItemPosition定位用的,QCPItemBracket通过setLength设置left/rightcenter的垂直距离(像素)
    setLength设置的长度

    QCPItemBracket有四种类型:

    • bsSquare 中括号
    • bsRound 小括号
    • bsCurly 大括号
    • bsCalligraphic 实体大括号

    QCPItemCurve

    QCPItemCurve
    可以看到QCPItemCurve有四个点决定其位置起点start和终点end以及两个控制点startDirendDir,理解QCPItemCurve的位置需要我们对贝塞尔曲线有所理解

    QCPItemText

    QCPItemText
    可以看到QCPItemText由position决定其位置,但是position不一定是在文字中心的位置,我们可以通过setPositionAlignment设置position对齐在文字的哪一个地方,比如要对齐在topLeft的位置:setPositionAlignment(Qt::AlignLeft)

    QCPItemTracer

    tracer是比较常用的一个Item,它主要用来实时跟踪QCPGraph的某个数据点,QCPItemTracer也是用一个position来决定其位置

    QCPItemTracer

    QCPItemTracer有五种风格

    • tsNone 不显示tracer
    • tsPlus 加号
    • tsCrosshair 十字线,横跨整个轴矩形
    • tsCircle 圆
    • tsSquare 方块

    QCPItemTracer通过函数setGraphsetGraphKey设置要跟踪的图表以及数据点,setGraph(nullptr)可以使QCPItemTracer得位置是任意的。QCPItemTracer的位置还跟setInterpolating函数有关,当setInterpolating为true时,启用线性插值,这时候QCPItemTracer的位置是精确地在我们设置的位置,并且对value轴的值进行线性插值;为false的时候QCPItemTracer的位置是最接近于这个位置的key值点的位置

    相关文章

      网友评论

        本文标题:QCustomPlot之Item(十)

        本文链接:https://www.haomeiwen.com/subject/liahyhtx.html