2015-09-06 182 views
0

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

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

如果QCustomPlot具有键和值,为什么无法在重绘图中正确定位它们,而不管图的大小如何调整?

回答

0

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

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

因此,如果您使用的是实时数据,请尽早在您的程序中使用时间戳,并且不要将其放入可能延迟或排队在其他线程之后的函数中。

0

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

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

如果指针不为空,发送者是一个有效的QCustomPlot,你可以如请写下如下代码:

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

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

+0

因此,在重绘之前重新设置范围解决了错位和紧张的问题,而不是平滑的问题? 我只是要求澄清,因为它似乎并不明显可以解决问题。今晚会试试,谢谢。 – AKstat

+0

也许你会说明问题并添加一些图片。现在我不确定它是否有帮助。你试过了吗? – Gombat