Показать точки в QCustomPlot с помощью QCPItemTracer

Я уже давно пытаюсь создать механизм, который бы создавал текстовые метки рядом с моими точками на графике с координатами. Из документации я прочитал, что для этого мне нужно использовать QCPItemTracer. Как бы я ни пытался, я не могу отобразить какие-либо дополнительные элементы на своем графике с помощью этого объекта. В примерах QCustomPlot есть одна программа, использующая QCPItemTracer, но когда я ее запускаю, я также не вижу никаких дополнительных объектов. Я пытаюсь запустить пример кода ниже:

QCPItemTracer *phaseTracer = new QCPItemTracer(customPlot);
customPlot->addItem(phaseTracer);
phaseTracer->setGraph(customPlot->graph(DATA_PLOT));
phaseTracer->setGraphKey(7);
phaseTracer->setInterpolating(true);
phaseTracer->setStyle(QCPItemTracer::tsCircle);
phaseTracer->setPen(QPen(Qt::red));
phaseTracer->setBrush(Qt::red);
phaseTracer->setSize(7);

Насколько я понимаю, это должно было добавить красные круги на мои точки сюжета. Это не. Я действительно хотел бы получить любую помощь в этом вопросе, возможно, какой-нибудь пример кода. Я очень долго с этим борюсь.


person Łukasz Przeniosło    schedule 08.05.2015    source источник
comment
Вы решили это? Я искал способ сделать то же самое, и ваш код работает для меня.   -  person Lallen    schedule 03.07.2015
comment
Да, я сделал, я добавил ответ.   -  person Łukasz Przeniosło    schedule 03.07.2015


Ответы (1)


Мне удалось заставить работать ярлыки:

returnCodes_t PlotData::insertPointLabel(const int& index, const double& x, const double& y)
{
    QCPItemText *textLabel = new QCPItemText(m_parentPlot);
    m_parentPlot->addItem(textLabel);
    textLabel->setPositionAlignment(Qt::AlignBottom|Qt::AlignHCenter);
    textLabel->position->setType(QCPItemPosition::ptPlotCoords);
    textLabel->position->setCoords(x, y); // place position at center/top of axis rect
    textLabel->setText(QString("x%1 y%2").arg(x).arg(y));
    textLabel->setVisible(labelsVisible);
    m_pointLabels.insert(index, textLabel);

    return return_success;
}
person Łukasz Przeniosło    schedule 03.07.2015