Мышью кручу спинбокс и от этого единственный символ выделенный инверсивным цветом ездит туда сюда.
Это нормальное задуманное поведение, которое реализовано соединением спинбокса с вот таким слотом в основном виджете:
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