qcustomplot圆_QCustomPlot之Item(十)

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

653c50ffb815

QCustomPlot中所有的Item

QCPItemBracket 括号Item

QCPItemCurve 曲线Item,其实就是贝塞尔曲线

QCPItemEllipse 椭圆/圆Item

QCPItemLine 线段Item

QCPItemPixmap 图片Item

QCPItemRect 矩形Item

QCPItemStraightLine 直线Item

QCPItemText 文字Item

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

653c50ffb815

QCPItemBracket

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

653c50ffb815

setLength设置的长度

QCPItemBracket有四种类型:

bsSquare 中括号

bsRound 小括号

bsCurly 大括号

bsCalligraphic 实体大括号

QCPItemCurve

653c50ffb815

QCPItemCurve

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

QCPItemText

653c50ffb815

QCPItemText

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

QCPItemTracer

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

653c50ffb815

QCPItemTracer

QCPItemTracer有五种风格

tsNone 不显示tracer

tsPlus 加号

tsCrosshair 十字线,横跨整个轴矩形

tsCircle 圆

tsSquare 方块

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QCustomPlot是一个用于绘制图表的开源C++库,可以在官网\[1\]上下载qcustomplot.h和qcustomplot.cpp文件。在使用QCustomPlot的时候,可以使用QCPItemEllipse类来创建一个形对象。在.h文件中,可以声明一个QCPItemEllipse指针来表示一个,或者使用QCPItemEllipse指针数组来表示多个\[2\]。 具体的代码示例如下: ```cpp // 创建一个 QCPItemEllipse *m_pCPItemEllipse = new QCPItemEllipse(ui->customplot); m_pCPItemEllipse->topLeft->setCoords(x, y); // 设置的左上角坐标 m_pCPItemEllipse->bottomRight->setCoords(x + width, y + height); // 设置的右下角坐标 m_pCPItemEllipse->setPen(QPen(Qt::red)); // 设置的边框颜色 m_pCPItemEllipse->setBrush(QBrush(Qt::blue)); // 设置的填充颜色 // 创建多个 QCPItemEllipse **m_pCPItemEllipseArray = new QCPItemEllipse*\[numCircles\]; for (int i = 0; i < numCircles; i++) { m_pCPItemEllipseArray\[i\] = new QCPItemEllipse(ui->customplot); // 设置每个的坐标、大小和样式 // ... } ``` 请注意,上述代码中的`ui->customplot`表示QCustomPlot对象的指针,你需要根据实际情况进行替换。 希望这个回答能够帮到你! #### 引用[.reference_title] - *1* *2* *3* [QCustomPlot使用](https://blog.csdn.net/pzs0221/article/details/118263290)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值