2015-09-06 149 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