我使用的是GTK,當我將文本插入到TextView中時,它似乎在後臺線程中處理它。如何強制TextView處理其文本並進行渲染
- 我插入1行
- 我做一些其他的東西一文,但在這個非常時刻,文本甚至尚未渲染,
- 我用ScrollToIter(),因此它滾動到底 - 但由於該文本還沒有呈現,沒有終點滾動到,所以沒有什麼發生
如果我插入滾動結束到一些計時器,它的作品 - 但它是相當緩慢和怪異。 (文本首先被繪製,然後在完成之後跳到底部,對於長文本它會跳幾次,因爲繪圖需要很長時間)。
同樣每當我更改Buffer.Text時,控件都會重繪所有行(在循環中逐行添加,這看起來也非常煩人)。
我需要做的是:
- 變化TextView.Buffer.Text不同的字符串
- 強制的TextView來處理所有的文本並立即重繪
- 滾動到底
例如:
讓我們假設你想創建一個文本編輯器,它應該是打開大文本文件(100 000行),並在打開文件後立即滾動到底部。理想情況下,您打開文件,首先看到的是底部。這是許多文本編輯器中發生的事情。我想用這個gtk的東西來實現這個行爲。
我該怎麼做?
ok我對事件很好,但問題是,什麼事件名稱是控制完成其繪圖?如果我知道它,我可以運行滾動以結束信號(順便說一句,我沒有在循環中插入一個長文本 - 我插入一行代碼長文本(textview.Buffer.Text = longtext)它似乎我喜歡,如果它被插入一個循環給定的方式如何被呈現 – Petr 2013-03-27 22:09:45
順便說一句 - 你確定沒有辦法來「加快」文本渲染?我想知道有多少文本編輯器編寫的GTK句柄開放的大文本文件,因爲我從來沒有看到這在我的應用程序中看到的任何地方... – Petr 2013-03-27 22:13:44