Qt:以文本形式显示大量实时数据的正确方法?

时间:2015-02-24 14:51:30

标签: c++ qt

如果我有大量的实时数据,请说每0.5秒100 gps的位置。我想在与文本相同的屏幕上显示它们。什么是最好的解决方案? 目前我使用了100个QLabel,它导致GUI线程卡住。 具有QStandardItemModel的tableview是否会提供更快的响应?

如果我使用tableview,我是否应该使用1个表格视图来显示所有100个GPS位置或100个表格视图?

1 个答案:

答案 0 :(得分:1)

每0.5秒更新一次,从一台机器到另一台机器,很多标签都很昂贵。您可以编写自己的QWidget子类,重新实现paintEvent以显示100个元素的QStringList的内容。 您可以让QWidget每隔1或2秒安排一次更新,同时更改paintEvent用于显示数据的基础QStringList模型。

您将使用QPainter,这对于让您在窗口小部件上绘制文本非常简单。您最终将使用QPainter::drawText或其中一项重新启用。

注意如果从不同的线程更新QStringList,您可能需要使用QMutex来处理对数据的访问。否则,您可以在同一个线程GUI上安排屏幕更新和数据更新。