crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> QTextCursor и подсветка текста в QPlainTextEdit, непонятное поведение при выделении текста
Kroll
  опции профиля:
сообщение 17.11.2015, 7:24
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 7.12.2011
Пользователь №: 3049

Спасибо сказали: 0 раз(а)




Репутация:   0  


В QWidget засунут QPlainTextEdit с текстом внутри. ReadOnly. Так же рядом есть спинбокс с диапазоном длинны строки текста загруженного в QPlainTextEdit.

Мышью кручу спинбокс и от этого единственный символ выделенный инверсивным цветом ездит туда сюда.

Это нормальное задуманное поведение, которое реализовано соединением спинбокса с вот таким слотом в основном виджете:

void Widget::moveCursor(int pos)
{
    if(ui->plainTextEdit->toPlainText() != "")
    {
        textCursor->setCharFormat(ui->plainTextEdit->textCursor().charFormat()); //стирает выделение

        textCursor->setPosition(pos+1);
        textCursor->movePosition(QTextCursor::Left, QTextCursor::KeepAnchor);
        textCursor->setCharFormat(*charFormat); //красит выделение
    }
}


textCursor создан в конструкторе базового виджета:
textCursor = new QTextCursor(ui->plainTextEdit->document());

То есть у plainTextEdit остаётся и свой курсор отдельно.

QTextCharFormat charFormat тоже отдельный для инверсивного выделения, а родным я делаю сброс выделения на обычные цвета.


Собственно проблема:
Всё работает как задумано ровно до того момента, когда я ткну мышью в текст. И как только рабочий курсор с выделением доезжает до этой позиции, то выделение перестаёт стираться и красит всё, где побывает курсор. Если при этом ткнуть мышью в новое ещё не закрашенное место текста, то курсор с выделением начинает затирать всё после себя пока снова не дойдёт до нового места, куда я ткнул мышью и стирание опять исчезнет. Если текст весь закрасился, то нормальное поведение востановить не получается.

Каким образом не используемый мной в алгоритме подсветки родной курсор вмешивается в его работу?

Qt 4.8.4
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.11.2024, 15:21