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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTextEdit. textChanged(). Как запретить изменение текста  (Прочитано 5304 раз)
G-virus
Гость
« : Май 21, 2012, 13:45 »

Всем привет. Помогите решить такую проблемку. Есть textEdit, в нем текст разноцветный (подсветка синтаксиса). Пользователь может редактировать его, как хочет. Но. В тексте присутствуют блоки (/* и */), это не комментарий Си, а спец-блоки, т.к. код паскалевский. Эти блоки пользователю нельзя изменять. Как можно запретить изменение текста в таких блоках? Для упрощения они выделены цветом Qt::Cyan.

Спасибо
Записан
Bepec
Гость
« Ответ #1 : Май 21, 2012, 15:19 »

Как вариант при очередном изменении возвращать в прежнее состояние. Но понято и ежу, что это грубый подход.
Записан
G-virus
Гость
« Ответ #2 : Май 21, 2012, 17:45 »

Не, это-то понятно, что нужно возвращать прежнее состояние. Больше интересует, можно ли понять, какой символ удалился и его цвет?
Записан
Bepec
Гость
« Ответ #3 : Май 21, 2012, 19:36 »

Можно как вариант Undo творить, если блок задет.

А вот как узнать что удалено - хм. Незнаю. Как вариант можно просто перехватывать нажатия и зырить что нажато в каком участке текста.

Конечно это будет не блеск, но как реальный метод(топорный с приложением напильника) пойдёт.
Записан
G-virus
Гость
« Ответ #4 : Май 21, 2012, 20:14 »

Да, пожалуй, так и попробую. В принципе, желательно конечно не успеть что-то удалить, а просто проверить, пытается пользователь удалить /* или */
Записан
Bepec
Гость
« Ответ #5 : Май 22, 2012, 07:12 »

Ну так оно и будет. Ты перехватываешь евент => решаешь что делать => пропускаешь если корректно => всё удаляется. Или не удаляется, если не пропустишь Подмигивающий
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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