【发布时间】:2014-11-24 20:07:58
【问题描述】:
我正在寻找一种方法来更改QTextEdit 的QTextCharFormat 的QTextBlock 而不触发添加撤消命令。让我解释一下:
QTextBlock 的QTextCharFormat 可以使用QTextCursor::setBlockCharFormat() 方法轻松更改。假设我们有一个名为myTextEdit 的QTextEdit,其可见光标在我们要更改的文本块内,我们可以像这样更改文本块的QTextCharFormat:
text_cursor = myTextEdit.textCursor()
text_cursor.setBlockCharFormat(someNewCharFormat)
上面的代码可以正常工作,但它也会在myTextEdit undo 堆栈中添加一个撤消命令。出于我自己的目的,我希望能够更改 QTextBlock 的 QTextCharFormat而不向 QTextEdit 的撤消堆栈添加撤消命令。
我考虑使用QTextDocument::setUndoRedoEnabled() 方法暂时禁用撤消/重做系统,但该方法也会清除撤消堆栈,我不想这样做。我还寻找其他方法来更改撤消/重做系统的行为方式,但我还没有找到一种方法让它暂时忽略更改。我只是想对QTextEdit 进行更改,而无需撤消/重做系统注册更改。
感谢任何提示或建议。谢谢!
【问题讨论】:
-
我认为你可能不走运,请参阅this qt-interest thread(有点旧,但它很好地总结了问题)。