Qt - 滚动浏览大文本缓冲区

时间:2013-02-02 14:13:25

标签: c++ qt text qt4 scroll

我有一个巨大的文本缓冲区,其中每一行都是通过库生成的,我希望我的QPlainTextEdit小部件能够以编程方式使用我的QScrollBar加载部分内容。

这就是我的想法:

  • 将每一行加载到向量<带 push_back 的字符串> 并存储计数变量及总行数
  • 使用QScrollBar加载其值位置+其他一些行以填充编辑框区域

这可能有效,但我发现推送' _back 向量中的每一行都非常慢,即使我保留空间也是如此它的元素。如果我将每一行追加到非常快的字符串,那么我需要用'\ n'字符拆分每一行。

我需要一种快速推送方式或能够快速在大文本缓冲区中获取n行的方法

1 个答案:

答案 0 :(得分:0)

我有类似的问题,你可能正在寻找的是懒惰的实例化。获取文件中的总行数。由于您的文本框仅显示n行,当滚动条转到位置y(行y)时,则仅显示文件中的行[y,n + y]

如果您想要更多缓冲区,请考虑将数据分解为逻辑页面。即如果您的“页面”大小为200行,那么当您通过滚动条转到第300行时,您知道要加载第2页。

逐行读取文件始终是线性时间。但是程序的减速将是在内存中保存大量数据的结果。