c++ - 找出QPlainTextEdit删除的文本

标签 c++ qt qt5 qt5.1

void QTextDocument::contentsChange(int position, int charsRemoved, int charsAdded) [signal]

只要文档内容发生变化,就会发出此信号;例如,当插入或删除文本时,或者应用格式时。

用户可以单击剪切/按删除/退格键或任何其他方式来删除文本。 问题是删除文本后会发出此信号。所以我不知道删除了哪些文本。现在position和charsRemoved都没用了。

我想找出 QPlainTextEdit 中删除的文本。有什么办法可以实现这一点吗?

最佳答案

Googie 建议的调用 undoredo 的技巧很好,为了使其更加高效,可以使用 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/

相关文章:

c++ - 在 QT for Windows 中使用 Win32 API

qt - 如何让 Qt 5.0 与 Qt Creator 2.5.2 一起工作?

c++ - 无法使用 cmake 使 QPrinter 链接

c++ - 使用函数指针进行结构初始化

C++继承。获取基类的数据成员值

c++ - QWidgets 是否为成员(member)?

qt - 按角度旋转整个 qwidget

c++ - 链接到 Xcode 中的库 - 静态或动态

c++ - MFC C++ 当我有权访问文件时总是返回 EOF

c++ - 如何获得光标形状?