![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Kroll |
![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 7.12.2011 Пользователь №: 3049 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
В QWidget засунут QPlainTextEdit с текстом внутри. ReadOnly. Так же рядом есть спинбокс с диапазоном длинны строки текста загруженного в QPlainTextEdit.
Мышью кручу спинбокс и от этого единственный символ выделенный инверсивным цветом ездит туда сюда. Это нормальное задуманное поведение, которое реализовано соединением спинбокса с вот таким слотом в основном виджете:
textCursor создан в конструкторе базового виджета:
То есть у plainTextEdit остаётся и свой курсор отдельно. QTextCharFormat charFormat тоже отдельный для инверсивного выделения, а родным я делаю сброс выделения на обычные цвета. Собственно проблема: Всё работает как задумано ровно до того момента, когда я ткну мышью в текст. И как только рабочий курсор с выделением доезжает до этой позиции, то выделение перестаёт стираться и красит всё, где побывает курсор. Если при этом ткнуть мышью в новое ещё не закрашенное место текста, то курсор с выделением начинает затирать всё после себя пока снова не дойдёт до нового места, куда я ткнул мышью и стирание опять исчезнет. Если текст весь закрасился, то нормальное поведение востановить не получается. Каким образом не используемый мной в алгоритме подсветки родной курсор вмешивается в его работу? Qt 4.8.4 |
|
|
![]() |
lanz |
![]()
Сообщение
#2
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
На вскидку
Возвращает charFormat в позиции родного курсора. Поэтому когда выделение доезжает до этого места то
не стирает выделение, а получает *charFormat. Что из этого следует надо еще подумать. Смысл в том что charFormat не связан с курсором, это общие данные, которые используют оба курсора, отсюда и перемешивание. |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 27.2.2025, 14:19 |