我正在密谋QwtPlotCurve
这样:
QwtPlotCurve *qpc = new QwtPlotCurve();
qpc->setSamples( QVector<double>::fromStdVector(x[i]), QVector<double>::fromStdVector(y[i]));
然后我将其附加到QwtPlot
。
我需要为此QwtPlotCurve
的每个点设置一个工具提示,我该如何实现呢?
答案 0 :(得分:1)
我不知道是否有内置函数,但您可以使用QwtPlotMarker。以下是在绘图的鼠标事件中使用的一些代码示例
void showToolTip(QMouseEvent* ev){
// get all curves
QwtPlotItemList curves = qwtplot->itemList(QwtPlotItem::Rtti_PlotCurve);
// works only for one curve, otherwise iterate over them and compare
double distance = 1e99;
int point_index = static_cast<QwtPlotCurve*>(curves[0])->closestPoint(QPoint(ev->x(), ev->y()), &distance);
if(distance > _some_limit) { return; }
QPointF p = static_cast<QwtPlotCurve*>(curves[0])->sample(point_index);
QwtPlotMarker* tooltip = new QwtPlotMarker();
tooltip->setLabel("X: "+QString::number(p.x())+" Y: "+QString::number(p.y()).c_str());
tooltip->setXValue(p.x());
tooltip->setYValue(p.y());
tooltip->attach(qwtplot);
qwtplot->replot();
}
注意:显然缺少一些变量,代码只是一个示例,不会自行编译。应该很容易适应您的应用