Название: Не меняется формат символов в selection в QPlainTextEdit Отправлено: Гурман от Июль 19, 2011, 18:59 Надо подчеркнуть одно слово в тексте, поэтому решил не мучать syntax highlighter, поскольку... он уже есть, и нагружать его подчеркиванием одного слова в тексте, причем не постоянным, не хочется. В мануале написано:
Цитировать void QPlainTextEdit::setCurrentCharFormat ( const QTextCharFormat & format ) Sets the char format that is be used when inserting new text to format by calling QTextCursor::setCharFormat() on the editor's cursor. If the editor has a selection then the char format is directly applied to the selection. То есть, вроде надо просто выделить нужное слово и поменять ему формат. Поэтому просто сделал так: Код: void Editor::setErrorPosition( unsigned int line, unsigned int pos ) однако никакого подчеркивания в тексте нет, что не так? думал, может последние 2 строки как-то мешают, забивал их - нет, ничего не меняется, и что самое странное - без них все равно формат не устанавливается, набираемый далее текст не имеет подчеркивания где-то я наверно разрешающий флаг пропустил, но упоминания о нем нет в описании setCurrentCharFormat() кто так делал, подскажите... Название: Re: Не меняется формат символов в selection в QPlainTextEdit Отправлено: Гурман от Июль 21, 2011, 18:18 решено с помощью знатоков на qt developer forum, чтобы изменения в области курсора происходили в тексте, надо перед ними устанавливать в нем курсор вызовом setTextCursor( cursor ); ну и, сам я ранее заметил, что не было разрешения использовать подчеркивание, то есть,
Код: cursor.movePosition( QTextCursor::Start ); работает как надо несколько неожиданно, поскольку копия курсора позволяет взять текст под ним, но если начать менять, то она ничего не меняет Название: Re: Не меняется формат символов в selection в QPlainTextEdit Отправлено: Гурман от Июль 22, 2011, 13:51 попутно выяснился косяк в Qt - после выполнения setCurrentCharFormat( newcharfmt ); слетает установленный syntax highlighter, причем он не слетает полностью - текст, за исключением текущей строки отображается без подсветки синтаксиса, она есть только в текущей строке, и далее появляется только в измененных строках
лечится вызовом rehighlight() после setCurrentCharFormat( newcharfmt ); |