在两个QTextEdit或QTextEdit与QScintilla之间同步内容及撤销历史
我正在用pyqt4写一个博客编辑器。现在我遇到一个问题。这个编辑器有两个标签,一个是所见即所得的编辑器,另一个是HTML代码编辑器。一个地方的修改应该能在另一个地方显示出来。一个方法是每当qtextedit中的文本变化时,使用setHtml和toHtml这两个函数。但是这个方法有个问题,就是当我在qtextedit上使用setHtml时,之前的编辑撤销历史就会丢失。如果我尝试在textchanged信号上维护自己的历史记录,会占用很多内存。想象一下,我输入一个句子,textchanged信号会对每一个字符都发出一次,这样撤销就只能逐个字符地进行。
我试着在两个qtextedit之间共享同一个qtextdocument,但这也失败了,因为高亮显示是和qtextdocument关联的,所以会同时应用到两个qtextedit上。
还有一个选择是,当用户在所见即所得的编辑器窗口工作时不做任何事情。当用户在HTML代码编辑器中进行一些编辑时,我会等到用户完成编辑,然后找出这次编辑的差异,接着在所见即所得编辑器的qtextdocument中做出相应的修改。这种方法可行吗?我该如何在qtextdocument中进行这样的修改?有没有更简单的方法我不知道呢?
请帮帮我。