想要在两个坐标系下都画上如下参考线(阈值线,或者 水平线), 这个参考线随着坐标轴的拖拽能够一直显示
我们找到了QCPItemStraightLine,该类能够画一条无限延伸的直线,通过下面的代码能够实现在A坐标系画一条水平线,但不能在B坐标系画直线。
m_pHorReffer = new QCPItemStraightLine(this);
m_pHorReffer->setPen(QPen(Qt::red, 3, Qt::DotLine));
m_pHorReffer->point1->setCoords( -10, 750);//设置点1的坐标
m_pHorReffer->point2->setCoords( -30, 750);//设置点2的坐标
解决方案
参考官网: Qt Plotting Widget QCustomPlot - Itemshttps://www.qcustomplot.com/index.php/tutorials/items
参考:原文链接:https://blog.csdn.net/qq21497936/article/details/124567140
项剪切
默认情况下,项目被剪裁到主轴矩形,这意味着它们仅在主轴矩形内可见。要使项目在该axis rect外部可见,请通过调用setClipToAxisRect(false) 禁用剪裁。
另一方面,如果希望将项目剪裁到不同的轴rect,可以通过setClipAxisRect指定它。项目的clipAxisRect属性仅用于剪裁行为,原则上与项目可能通过其位置成员绑定到的坐标轴无关(请参见QCPItemPosition::SetAxis)。但是,通常情况下,用于剪裁的轴rect也包含用于项目位置的轴。
根据上面的代码如下,就能实现在B坐标系画参考线的目的了
m_pBHorReffer = new QCPItemStraightLine(this);
m_pBHorReffer->setPen(QPen(Qt::red, 3, Qt::DotLine));
//垂直参考线,就是两点一线
//m_pHorReffer_DG->setClipToAxisRect(false);//裁剪,让外部也要看到
m_pBHorReffer->setClipAxisRect(m_pCPAxisRect[1]);//设置裁剪的坐标轴
m_pBHorReffer->point1->setAxes(m_pCPAxisRect.at(1)->axis(QCPAxis::atBottom),m_pCPAxisRect.at(1)->axis(QCPAxis::atLeft));//绑定坐标
m_pBHorReffer->point2->setAxes(m_pCPAxisRect.at(1)->axis(QCPAxis::atBottom),m_pCPAxisRect.at(1)->axis(QCPAxis::atLeft));
m_pBHorReffer->point1->setCoords( -10, 900);//设置点1的坐标
m_pBHorReffer->point2->setCoords( -30, 900);//设置点2的坐标
官网:Qt Plotting Widget QCustomPlot - Introductionhttps://www.qcustomplot.com/index.php/introduction