Add irreversible changes in a QPlainTextEdit

  • Hello !

    I'm working on a kind of code editor. To dot it, I'm using a QPlainTextEdit, as this example shows, to be able to display the line numbers for example.
    But I also want to add some anchors and html links in this editor to jump from some lines to others.
    I know that for this, QTextBrowser is more suitable, but I want to keep my editor features.

    And when I add a link with a QPlainTextEdit, I don't want to add an item in the undo stack. So I tried something like this :

    auto editor = new QPlainTextEdit;
    void addLink()
        editor->document()->blockSignals(true);   // To prevent the modificationChanged to be emitted.
        QTextCursor cursor { editor->textCursor() };
        cursor.insertHtml("<a href=\"anchor\">LINK</a>");    // Actually we replace the existing text with a link.

    But the problem is that setUndoRedoEnabled clears the undo/redo stack. We should use QSyntaxHighlighter to avoid adding an item in the stack but is it possible to add html link ??

    • Actually, here are the three options I see :

    • Be able to add some text without changing the undo/redo stack
    • Be able to add html links with the highlighter
    • Be able to display the line numbers using a QTextBrowser

    Maybe there is another solution.
    Thanks for your help !

  • Lifetime Qt Champion


    AFAIK you cannot do it easily.

    Note that QTextBrowser can be made writable.