【发布时间】:2021-05-29 13:23:58
【问题描述】:
这个问题之前已经被问过,但只是关于 光标位置 看起来..
我已经实现了某种基于QTextEdit 的自动加载更改文本编辑器。问题是:当我使用
self.my_editor.setPlainText(new_text)
光标会跳到0的位置,很不舒服。
当然,我不是唯一一个有这种感觉的人,所以人们已经问过他们如何在应用新文本后恢复光标,例如这里:https://www.qtcentre.org/threads/13933-Restoring-cursor-position-in-QTextEdit
但我找到的答案只涵盖了文本光标本身的位置。
例如此代码将保存光标、设置新文本并恢复光标:
c = self.my_editor.textCursor()
p = c.position()
self.my_editor.setPlainText(new_text)
c.setPosition(p)
self.my_editor.setTextCursor(c)
但现在编辑器实际上会滚动到位置0,然后再次向下滚动,以便能够在恢复的位置显示光标。所以在视觉上编辑器会跳来跳去(不过这仍然比失去光标要好)
有没有办法同时存储QTextEdit 实例的可视区域?当然,如果文本内容真的发生了变化,那么将视觉跳跃最小化几乎是微不足道的,但是如果文本在光标后面发生变化,难道不应该根本看不到任何跳跃吗?
【问题讨论】:
标签: python pyqt5 qtextedit cursor-position