我正在寻找一种方法来更改的QTextBlock
的QTextCharFormat
而不触发添加撤消命令。让我解释一下:更改为QTextEdit而不添加撤消命令到撤消堆栈
QTextBlock
的QTextCharFormat
可以很容易地通过使用QTextCursor::setBlockCharFormat()
方法进行更改。假设我们有一个QTextEdit
称为myTextEdit
它的可见光标是我们要改变文本块中,我们可以改变文本块的QTextCharFormat
像这样:
text_cursor = myTextEdit.textCursor()
text_cursor.setBlockCharFormat(someNewCharFormat)
上面的代码工作正常,但它也将增加一个撤销命令到myTextEdit
撤销堆栈。出于我自己的目的,我希望能够更改QTextCharFormat
的QTextBlock
而不添加撤消命令到QTextEdit
的撤消堆栈。
我认为使用QTextDocument::setUndoRedoEnabled()
方法暂时禁用了撤消/恢复系统,但该方法也清除了我不想做的撤消堆栈。我也在寻找其他方法来改变undo/redo系统的行为方式,但是我还没有找到一种方法让它暂时忽略更改。我只是想对QTextEdit
进行更改,而没有撤销/重做系统注册更改。
任何提示或建议表示赞赏。谢谢!
我想你可能会走运,看看[这个qt-interest线程](http://www.archivum.info/[email protected]/2006-10/01204/QTextEdit-temporary-undo -suppression.html)(这有点旧,但它总结的问题相当好)。 – ekhumoro 2014-11-25 00:31:59