В настоящее время я разрабатываю простой текстовый редактор oline для моего университетского класса.Я использую сигнал QTextDocument::contentsChange(index, charsRemoved, charsAdded)
, чтобы определить изменения, внесенные в документ по QPlainTextEdit
, и отправить их на сервер.Но иногда аргументы charsRemoved
и charsAdded
дают недопустимые значения.
Например, когда я вставляю текст с Ctrl + V в середине текста редактора, тогда сообщается правильная информация charsAdded (charsRemoved == 0 && charsAdded == <inserted_text_length>
).Но если я вставлю текст в нулевой индекс, прямо перед первым символом, то будут предоставлены неверные данные (charsRemoved == <previous_editors_text_size> + 1 && charsAdded == <new_editors_text_size> + 1
).Однако, если я вводю один символ, набирая его с клавиатуры, и мой курсор помещается в начало редактора, сигнал правильно сообщает об отчетах charsRemoved == 0 && charsAdded == 1
Более того, когда я меняю язык ввода текста, нажимая Ctrl+ Shift или когда я использую Alt + Tab, когда курсор находится в любом месте окна QPlainTextEdit
, то сигнал QTextDocument::contentsChange()
излучается дважды, и он сообщает, что charsRemoved == <current_editors_text_size> + 1 &&
charsAdded == <previous_editors_text_size>
Это ошибка или иным образом, как я могусправиться с этой проблемой?