Как сделать невыбираемую часть текста в QTextEdit/QTextDocument?

Предположим, у меня есть такой текст в QTextEdit:

Это пример текста

Слово «образец» следует рассматривать так, как если бы оно было одним символом, т.е. когда я пытаюсь его выбрать, должны быть выбраны либо все символы в слове, либо ни один. То же самое, когда я перемещаюсь по документу с помощью клавиш влево/вправо, курсор должен считать, что все слово представляет собой один атомарный элемент, т.е. если курсор находится в конце слова, нажатие влево должно перейти к началу слова и наоборот наоборот Backspace должен удалить весь элемент.

Лучшее, что я мог придумать, это сгенерировать изображение с этим словом на лету и вставить его в нужное место, но это кажется очень хакерским, интересно, есть ли лучший способ сделать это?


person pullo_van    schedule 28.11.2015    source источник


Ответы (1)


Могу предложить двигаться в следующем направлении:

  1. Подкласс от QTextEdit.
  2. Переопределите mousePressEvent(), в котором:
  3. Получить слово под курсором.
  4. Выберите слово или выделите его.
person Alexander Tyapkov    schedule 28.11.2015
comment
Спасибо, я пытался избежать какой-либо пользовательской реализации логики клавиш выбора/стрелки/возврата, надеясь, что есть что-то, что можно сделать с помощью собственных API. Просто количество крайних случаев, которые следует учитывать, может сделать этот подход довольно сложным. - person pullo_van; 28.11.2015