void QTextDocument::contentsChange(int position, int charsRemoved, int charsAdded) [signal]
只要文档内容发生变化,就会发出此信号;例如,当插入或删除文本时,或者应用格式时。
用户可以单击剪切/按删除/退格键或任何其他方式来删除文本。 问题是删除文本后会发出此信号。所以我不知道删除了哪些文本。现在position和charsRemoved都没用了。
我想找出 QPlainTextEdit 中删除的文本。有什么办法可以实现这一点吗?
最佳答案
Googie 建议的调用 undo
和 redo
的技巧很好,为了使其更加高效,可以使用 QTextCursor
来提取文本而不是调用 toPlainText
:
void TextEdit::slotCheckRange(int pos, int removed, int added){
if(removed > 0){
undo();
QTextCursor c(textCursor());
c.setPosition(pos);
c.setPosition(pos + removed, QTextCursor::KeepAnchor);
qDebug() << "Removed: " << removed << " (" << c.selectedText() << ")";
redo();
}
if(added > 0){
QTextCursor c(textCursor());
c.setPosition(pos);
c.setPosition(pos + added, QTextCursor::KeepAnchor);
qDebug() << "Added: " << added << " (" << c.selectedText() << ")";
}
}
关于c++ - 找出QPlainTextEdit删除的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24628587/