我正在使用 GTK,当我将文本插入 TextView 时,它似乎在后台线程中处理它。
- 我在 1 行插入文本
- 我做了一些其他的事情,但是在这一刻,文本甚至还没有呈现在那里
- 我使用 ScrollToIter() 使其滚动到底部 - 但是因为文本尚未呈现,滚动到没有尽头,所以什么都没有发生
如果我将滚动条插入到某个计时器中,它可以工作 - 但它非常缓慢而且很奇怪。(先绘制文本,绘制完成后跳到底部,对于长文本,它会跳转几次,因为绘制需要很长时间)。
每次我更改 Buffer.Text 时,控件都会重绘所有行(在循环中逐行追加,这看起来也很烦人)。
我需要做的是:
- 将 TextView.Buffer.Text 更改为不同的字符串
- 强制 TextView 处理所有文本并立即重绘
- 滚动到底部
例如:
假设您要创建一个文本编辑器,该编辑器应该打开大文本文件(100 000 行),并在打开文件后立即滚动到底部。所以理想情况下,你打开文件,首先你看到的是它的底部。这就是在许多文本编辑器中发生的事情。我想用这个 gtk 东西来实现这种行为。
我怎样才能做到这一点?