【问题标题】:QTextBrowser insertPlainText() insert much data causes NO RESPONSEQTextBrowser insertPlainText() 插入大量数据导致无响应
【发布时间】:2020-07-04 21:41:17
【问题描述】:

我使用insertPlainText()在槽函数中向QTextBrowser插入数据,但随着数据的增加,似乎会导致延迟甚至没有响应。但是当我在数据末尾添加'\n'模拟append()时,滞后现象消失了。但是我不想加新行,怎么解决这个问题?

我尝试在insertPlainText() 之后使用qApp->processEvents(),但它会导致崩溃。

我尝试启动一个计时器来运行qApp->processEvents() 以刷新 UI,但它没有解决问题。

我应该启动一个新线程来接收串口数据吗?但是插入的数据(我的意思是接收的数据)大小不大,但浏览器中的总数据大小很大。接收数据可能不会花费很多时间。

【问题讨论】:

  • 你在文本浏览器中存储了多少数据,你要插入多少?
  • 能否附上相关代码?

标签: qt qtextbrowser


【解决方案1】:

insertPlainText() 在我的机器(i7,16G)中表现不佳。当总数据长度约为 4096 字节时,插入数据大约需要 100ms。我尝试了QScintilla 开源小部件,它更好但仍然不完美。所以我认为使用insertPlainText() 可能是错误的想法。

我改变了想法。我使用QByteArray 存储所有数据并使用setText() 显示最近的4096 字节。看起来我将数据分成许多页面并显示最近的页面。这种方法解决了如何存储大量数据的问题。但还有一个小问题是,当我最大化我的应用程序时,4096 字节的数据无法填满我的屏幕。看起来不太好,但是数据多会导致响应慢,因为应用的数据刷新频率很高。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-30
    • 1970-01-01
    • 1970-01-01
    • 2022-07-22
    • 2019-03-18
    • 2021-12-24
    • 2017-12-01
    • 1970-01-01
    相关资源
    最近更新 更多