QwtLegend 里面 canvas

QwtLegend inside canvas

我想在我的 canvas 中添加一个交互式图例,但是我无法让它工作。我正在使用 qwt6.1.2,此版本不再具有将图例作为“ExternalLegend”插入的选项,而是具有 class qwtPlotLegendItem 来处理 canvas 内的图例。但是,当我阅读文档时,我看到:

In opposite to QwtLegend the legend item is not interactive.

An external QwtLegend with a transparent background on top the plot canvas might be another option with a similar effect.

我的问题是:如何在图 canvas 上方显示 QwtLegend?

在 QwtPlot 的文档中,我读到:

Legends, that are not inserted into the layout of the plot widget need to connect to the legendDataChanged() signal. Calling updateLegend() initiates this signal for an initial update.

我已经连接了 legendDataChanged 信号并通过调用 updateLegend() 触发了它,但现在我不知道下一步该怎么做。关于如何进行的任何提示?

好的,我开始工作了:

QwtPlot* plot;

// Attach some plots/histograms to the plot.

MyLegend* legend = new MyLegend(plot);


MyLegend ::MyLegend (QwtPlot * pPlot)
    : m_pPlot(pPlot)
{
   setParent(m_pPlot);
   setGeometry(0, 0, 100, 100);
   connect(m_pPlot, &QwtPlot::legendDataChanged,
                  this, &MyLegend ::LegendDataChanged);

   m_pPlot->updateLegend();
}

void MyLegend ::LegendDataChanged(const QVariant &itemInfo, const QList< QwtLegendData > &data)
{
    updateLegend(itemInfo, data);
}