QCustomPlot在情节调整期间错误的情节



我有一个QCustomPlot,它正在绘制传入数据。这些图看起来很棒,但是当我调整窗口大小或缩放或突然拖动时,数据就会被错误地绘制出来,就好像我从画家下面拖出画布一样。

为什么会发生这种情况?我将尝试在我的绘图槽中添加一个条件,以检测是否发生拖动并推迟绘图,但我希望我不必这样做。

如果QCustomPlot有键和值,为什么它不能在重新绘制时正确定位它们,无论如何调整绘图的大小?

我也有类似的问题。我解决了它创建一个插槽"onBeforeReplot()",它连接到QQCustomPlot的信号"beforeReplot()"。在槽中,首先获得QCustomPlot的指针:

QCustomPlot *plot = dynamic_cast<QCustomPlot*>(QObject::sender() );

如果指针不是NULL,发送者是一个有效的QCustomPlot,你可以这样写一些代码:

plot->xAxis->setRange( computeValidRangeX( plot->xAxis->range() ) );
plot->yAxis->setRange( computeValidRangeY( plot->xAxis->range() ) );

以确保范围有效。方法"computeValidRange*"确实以当前范围作为输入并给出一个有效范围。在其中,您可以为范围设置最小值或最大值以及最小跨度。

这最终并不是一个真正的QCustomPlot问题,这就是为什么它一开始并不明显。在我的程序中,我正在接收实时数据。数据在我的add data/replot函数中得到时间戳。由于重绘图是排队的,当我拖动和调整图的大小时,它会导致调用add data/replot函数时的延迟,从而抛出时间戳。

我通过创建时间戳来修复这个问题,只要我解析了我的数据,这是由不同的类管理的。然后将时间戳传递给add data/replot函数。

因此,如果你使用的是实时数据,那么在程序中尽可能早地获取时间戳,并且不要将其放在可能会延迟或排在其他线程后面的函数中。

最新更新