标记点
1、含义:指向QCPGraph的数据点的Item
2、new一个新的标记点
m_sameTimeTracer = new QCPItemTracer(SameTimeCompareCustomPlot);
m_sameTimeTracer->setParent(SameTimeCompareCustomPlot); //设置标记点的父类
m_sameTimeTracer->setPen(QColor(255,255,255));
m_sameTimeTracer->setBrush(QBrush(QColor(255,0,0),Qt::SolidPattern));
m_sameTimeTracer->setStyle(QCPItemTracer::tsCircle); //设置标记点的样式
m_sameTimeTracer->setSize(10); //标记点的大小
m_sameTimeTracer->setVisible(false);
3、思路:
循环遍历当前曲线的数据点,并将数据点的坐标与鼠标点击的位置坐标进行对比,当鼠标点击的位置在数据点附近的小范围内,则标记该数据点为标记点
QRect rect(0,0,1,1); //设置小矩形框作为数据点附近的范围
QPoint p;
double posKey;
p.setX(e->pos().x());
p.setY(e->pos().y());
foreach(QCPData data,graph->data()->values())
{
key = data.key;
value = data.value;
posKey = SameTimeCompareCustomPlot->xAxis->coordToPixel(key);
if(qAbs(posKey-e->pos().x())<=10)
{
double posx = graph->keyAxis()->coordToPixel(key);
double posy = graph->valueAxis()->coordToPixel(value);
rect.setRect(posx-10,posy-10,21,21);
if(!rect.contains(e->pos()))
continue;