C++ qwtplot:replot上没有打印更新
我使用基于qwtplot的绘图类,代码可在此处查看: 这段代码在另一个应用程序中使用,在这里我创建了qwtplot类QMatrixPlot并添加数据并调用replotC++ qwtplot:replot上没有打印更新,c++,qt,plot,qwt,C++,Qt,Plot,Qwt,我使用基于qwtplot的绘图类,代码可在此处查看: 这段代码在另一个应用程序中使用,在这里我创建了qwtplot类QMatrixPlot并添加数据并调用replot plot2DAmplitude->setMatrixData(QVector<double>::fromStdVector(dataAmplitude), xaxis.size(), QwtInterval(
plot2DAmplitude->setMatrixData(QVector<double>::fromStdVector(dataAmplitude),
xaxis.size(),
QwtInterval(xaxis.front(), xaxis.back()),
QwtInterval(yaxis.front(), yaxis.back()));
plot2DAmplitude->replot();
这一次有效。
尽管调用了相同的代码,但使用不同数据的第二个调用不会执行任何操作。只有当我放大和缩小数据时,数据才会得到更新
有什么想法吗?Qwt是6.1.3版。一旦我完成一个最小的例子,我会更新这篇文章 QwtPlotRasterItem缓存渲染图像。在代码中,您正在更改项目后面的数据,因此项目不知道缓存无效
使用QwtPlotRasterItem::invalidateCache,您可以解决类似的问题。这里是可能相同问题的另一个示例:。然而,plot->setAutoReplot true;没有为我解决如果。问题在于,如果数据可用于绘图,它就不会在gui中更新。
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) );
}