将工具提示设置为QwtPlotCurve

时间:2014-08-28 10:12:38

标签: qt tooltip qwt

我正在密谋QwtPlotCurve这样:

QwtPlotCurve *qpc = new QwtPlotCurve();
    qpc->setSamples( QVector<double>::fromStdVector(x[i]), QVector<double>::fromStdVector(y[i]));

然后我将其附加到QwtPlot

我需要为此QwtPlotCurve的每个点设置一个工具提示,我该如何实现呢?

1 个答案:

答案 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();
}

注意:显然缺少一些变量,代码只是一个示例,不会自行编译。应该很容易适应您的应用