Почему слот для QTextEdit::textChanged() вызывается дважды?

Я не знаю, в чём причина. М.б., действительно от Backspace приходят два нажатия.

Попробуйте в терминале ввести

и затем нажать Backspace.

Затем, если не лень, можно создать класс, производный от QTextEdit и в нём создать свой keyPressEvent(),

задать там свою обработку Backspace и там посмотреть, что происходит при её нажатии.