2017-07-21 21 views
0

上ノープロット更新私はqwtplotに基づいて、私のプロットクラスを使用して、コードをここに見ることができます: https://github.com/pospiech/code/tree/master/libdev/plot/plottools/trunk/srcqwtplot:再プロット

このコードは、他のアプリケーションで使用され、ここで私はqwtplotクラス(QMatrixPlot)を作成し、データを追加しますそして

plot2DAmplitude->setMatrixData(QVector<double>::fromStdVector(dataAmplitude), 
         xaxis.size(), 
         QwtInterval(xaxis.front(), xaxis.back()), 
         QwtInterval(yaxis.front(), yaxis.back())); 

    plot2DAmplitude->replot(); 

setMatrixData再プロットを呼び出すことは、次のコードです:

void setMatrixData(const QVector<double> &values, int numColumns, QwtInterval xAxisRange, QwtInterval yAxisRange) 
{ 
    m_MatrixRasterData->setInterval(Qt::XAxis, xAxisRange); 
    m_MatrixRasterData->setInterval(Qt::YAxis, yAxisRange); 

    double minValue = *std::min_element(std::begin(values), std::end(values)); 
    double maxValue = *std::max_element(std::begin(values), std::end(values)); 
    m_MatrixRasterData->setInterval(Qt::ZAxis, QwtInterval(minValue, maxValue)); 

    m_MatrixRasterData->setValueMatrix (values, numColumns);   
    d_spectrogram->setData(m_MatrixRasterData); 

    const QwtInterval zInterval = d_spectrogram->data()->interval(Qt::ZAxis); 
    setAxisScale(QwtPlot::yRight, zInterval.minValue(), zInterval.maxValue()); 

    QwtScaleWidget *axis = axisWidget(QwtPlot::yRight); 
    axis->setColorMap(zInterval, QColorMap::map(d_mapType)); 
} 

これは動作します - 一度。 異なるコードの2番目の呼び出しは何も行いませんが、同じコードが呼び出されます。オンにすると、データが更新されます。

Qwtはバージョン6.1.3です。私が最小限の例を終えると、私はこの記事を更新します。

+0

おそらく同じ問題の別の例を次に示します。https://stackoverflow.com/questions/34948704/qwt-plot-is-not-reploting/34949185#34949185しかし、 'plot-> setAutoReplot(true);'は私にとっては解決しませんでした。問題は、データがプロットのために利用可能な場合、単にguiで更新されないということです。 –

答えて

1

QwtPlotRasterItemは、レンダリングされたイメージをキャッシュします。あなたのコードでは、アイテムの背後のデータを変更しているので、アイテムは無効なキャッシュを認識しません。

QwtPlotRasterItem :: invalidateCache()を使用すると、このような問題を解決できます。

関連する問題