2015-02-24 34 views
-2

如果我有大量的實時數據,請說每0.5秒100個GPS位置。我想將它們顯示在與文字相同的屏幕上。那裏有什麼最好的解決方案? 目前我使用了100個QLabel,並導致GUI線程卡住。 具有QStandardItemModel的tableview會提供更快的響應嗎?Qt:將大量實時數據顯示爲文本的正確方法?

如果我使用tableview,我應該使用1個table view來顯示所有100個gps位置或100個tableview嗎?

+3

爲什麼還要每秒顯示200行文字?沒有人可以閱讀它!如果您正在顯示GPS座標,地圖上的點肯定會對一目瞭然的顯示更有用。 – cmannett85 2015-02-24 14:54:41

回答

1

每隔0.5秒更新一次,從機器到機器,很多標籤的價格可能很高。您可以編寫自己的QWidget子類,它重新實現paintEvent以顯示100個元素的QStringList的內容。 您可能讓QWidget每隔1或2秒安排一次更新,同時更改底層QStringList模型,從paintEvent獲取數據的位置顯示。

你打算使用一個QPainter這是非常簡單的讓你在小部件上繪製文本。你最終會使用QPainter::drawText或其中一個reimpmlementations。

注意如果QStringList從不同的線程更新,您可能想要使用QMutex來處理對數據的訪問。否則,您可能會在同一個線程(GUI)上安排屏幕更新和數據更新。

+0

所以我應該使用一個QWidget並重新實現它的paintevent而不是使用100 QWidget嗎? – Nyaruko 2015-02-24 15:16:15

+2

在觸發的內存和繪製事件方面肯定會更有效率。 – alediaferia 2015-02-24 15:16:56

相關問題