项目:增加图形元素
https://www.qcustomplot.com/index.php/tutorials/items
QCustomPlot允许在绘图上放置和锚定图形元素,例如文本,箭头,线条,矩形,任意像素图等。它们基于抽象基类QCPAbstractItem。有关项目机制和当前可用的内置项目的详细说明,可以在QCPAbstractItem的文档中找到。
使用箭头和文字的基本示例
本示例说明如何创建始终位于rect轴顶部的文本标签以及将绘图坐标中的点与该标签连接的箭头。
// add the text label at the top:
QCPItemText *textLabel = new QCPItemText(customPlot);
textLabel->setPositionAlignment(Qt::AlignTop|Qt::AlignHCenter);
textLabel->position->setType(QCPItemPosition::ptAxisRectRatio);
textLabel->position->setCoords(0.5, 0); // place position at center/top of axis rect
textLabel->setText("Text Item Demo");
textLabel->setFont(QFont(font().family(), 16)); // make font a bit larger
textLabel->setPen(QPen(Qt::black)); // show black border around text
// add the arrow:
QCPItemLine *arrow = new QCPItemLine(customPlot);
arrow->start->setParentAnchor(textLabel->bottom);
arrow->end->setCoords(4, 1.6); // point to (4, 1.6) in x-y-plot coordinates
arrow->setHead(QCPLineEnding::esSpikeArrow);
请注意,即使在拖动绘图范围时,箭头仍保持附着在绘图坐标(4,1.6)上,并相应地旋转/拉伸。这是通过QCustomPlot项目定位的灵活性实现的。可以将项目放置在绘图坐标,绝对像素坐标和轴rect大小的小数单位中。的文档QCPAbstractItem
和QCPItemPosition
更加详细地介绍了如何使用这些不同的可能性。
与绘图表一样,创建自己的项目也很容易。这可以通过创建自己的QCPAbstractItem子类来完成。请参见QCPAbstractItem文档中的子类化部分。
项目剪裁
默认情况下,项目被裁剪到主轴矩形,这意味着它们仅在主轴矩形内部可见。要使某个项目在该轴的矩形外部可见,请通过调用禁用裁剪setClipToAxisRect(false)
。
另一方面,如果您希望将项目剪切到其他轴rect,则可以通过进行指定setClipAxisRect
。项目的此clipAxisRect
属性仅用于剪切行为,并且原则上与项目可能通过其位置成员绑定的坐标轴无关(请参见参考资料)。但是,通常用于裁剪的轴rect也包含用于项目位置的轴。QCPItemPosition::setAxes
更高级的物品使用
有关QCustomPlot物品系统可以实现的功能的更高级,更真实的演示,请参阅“特殊用例”教程“带有物品的动态轴标签”。