void MainWindow::setupItemTracerTest(QCustomPlot *customPlot) { QCPItemTracer *tracer1 = new QCPItemTracer(customPlot); customPlot->addItem(tracer1); tracer1->position->setCoords(1, 3); tracer1->setStyle(QCPItemTracer::tsCircle); tracer1->setSize(20); QCPItemTracer *tracer2 = new QCPItemTracer(customPlot); customPlot->addItem(tracer2); tracer2->position->setCoords(2, 2.5); tracer2->setStyle(QCPItemTracer::tsCrosshair); QCPItemTracer *tracer3 = new QCPItemTracer(customPlot); customPlot->addItem(tracer3); tracer3->position->setCoords(3, 2); tracer3->setStyle(QCPItemTracer::tsPlus); tracer3->setSize(20); QCPItemTracer *tracer4 = new QCPItemTracer(customPlot); customPlot->addItem(tracer4); tracer4->position->setCoords(4, 1.5); tracer4->setStyle(QCPItemTracer::tsSquare); tracer4->setSize(20); QCPGraph *graph = customPlot->addGraph(); int n = 20; QVector<double> x(n), y(n); for (int i=0; i<n; ++i) { x[i] = 0.5+i/(double)n*4; y[i] = qSin(x[i])+1.5; } graph->setData(x, y); QCPItemTracer *graphTracer = new QCPItemTracer(customPlot); customPlot->addItem(graphTracer); graphTracer->setGraph(graph); graphTracer->setGraphKey(2.3); graphTracer->setStyle(QCPItemTracer::tsNone); graphTracer->setInterpolating(true); tracerTestTracer = graphTracer; connect(customPlot, SIGNAL(mouseMove(QMouseEvent*)), this, SLOT(tracerTestMouseMove(QMouseEvent*))); graphTracer->setStyle(QCPItemTracer::tsSquare); QCPItemText *text = new QCPItemText(customPlot); customPlot->addItem(text); text->setText("Tracer"); text->setPositionAlignment(Qt::AlignBottom|Qt::AlignHCenter); text->position->setType(QCPItemPosition::ptAxisRectRatio); text->position->setCoords(0.5, 0.05); text->setPen(QPen()); QCPItemCurve *curve = new QCPItemCurve(customPlot); customPlot->addItem(curve); curve->start->setParentAnchor(text->bottom); curve->startDir->setParentAnchor(curve->start); curve->startDir->setCoords(0, 100); curve->end->setParentAnchor(tracerTestTracer->position); curve->end->setCoords(0, -5); curve->endDir->setParentAnchor(curve->end); curve->endDir->setCoords(0, -100); curve->setHead(QCPLineEnding::esSpikeArrow); }