Russian Qt Forum
Ноябрь 25, 2024, 16:42 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTextEdit: Как заполучить "универсальное" событие вставки символа?  (Прочитано 4721 раз)
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« : Январь 09, 2016, 00:02 »

В свете нуливого количества ответов в теме QTextEdit: Как «отцепиться» от ссылки?, заменяю задачу.

Мне нужно отловить событие вставки символа в текст в объекте, унаследованном от QTextEdit.

Проблема осложняется тем, что символы могут вставляться, как минимум, тремя путями:

- Нажатием клавиши на клавиатуре;
- Вставкой из буфера обмена;
- Drag-and-drop текста.

Возможно, что еще есть методика вставки символа, пока припомнил только три. Ну еще плюсом идет удаление символа или выделения, тогда под курсором начинает находиться другой символ.

Из-за этого, тупое переопределение keyPressEvent() - этого явно недостаточно. Неужели надо лепить развесистые ловители событий и сигналов только для того, чтобы получить событие вставки символа?
Записан

Собираю информацию по крупицам
http://webhamster.ru
Bepec
Гость
« Ответ #1 : Январь 09, 2016, 02:12 »

ну лезть в исходники textEdit и там ставить фильтры.
Или же отловить все события и фильтровать в installEventFilter.
Ну в любом случае вам или надо все события отлавливать, или же ставить фильтр на textEdit.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Январь 09, 2016, 13:20 »

Какие проблемы (или чем не устраивает) сигнал textChanged ?
Записан
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« Ответ #3 : Январь 09, 2016, 14:54 »

Какие проблемы (или чем не устраивает) сигнал textChanged ?

При разборе полетов выяснилось несколько направлений. Что-то не могу определиться, что будет правильнее именно для данной задачи:

textChanged::QtextEdit
cursorPositionChanged::QtextEdit
contentsChange::QTextDocument
Записан

Собираю информацию по крупицам
http://webhamster.ru
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Январь 09, 2016, 15:18 »

Что-то не могу определиться, что будет правильнее именно для данной задачи:
Смотря чего Вы хотите добиться. Если по-прежнему "отвязаться от ссылки" (в общем случае "формата"), то при получении textChanged у Вас все нужные данные на руках
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #5 : Январь 10, 2016, 07:53 »

Это ты MyTetra дорабатываешь?
Багтрек есть?
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Dimka Novikov
Гость
« Ответ #6 : Январь 20, 2016, 10:30 »

Посмотрите вот сюда, как мне кажется, то что нужно для вашей ситуации

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

This signal is emitted whenever the document's content changes; for example, when text is inserted or deleted, or when formatting is applied.

Information is provided about the position of the character in the document where the change occurred, the number of characters removed (charsRemoved), and the number of characters added (charsAdded).

The signal is emitted before the document's layout manager is notified about the change. This hook allows you to implement syntax highlighting for the document.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.106 секунд. Запросов: 23.