Russian Qt Forum
Мая 10, 2025, 21:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTextEdit: Как заполучить "универсальное" событие вставки символа?  (Прочитано 4980 раз)
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

Сообщений: 865

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


Просмотр профиля
« Ответ #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.025 секунд. Запросов: 20.