Название: QTextEdit - выделение текста с помощью QTextCursor и функция setCharFormat() Отправлено: Rododendron от Июль 10, 2017, 11:12 Имеется 2 функции: одна выделяет текущий найденный текст стандартным синим цветом, вторая выделяет найденный текст по всему виджету голубеньким.
В первой функции выделение текста происходит т.о.: Код: QTextCursor cursor=edit->textCursor(); Во второй функции так (я привожу часть кода, здесь это происходит в цикле по всему виджету): Код: cursor.setPosition(pos); При этом вот какую странность я обнаружил: в первом случае обязательно писать: Код: edit->setTextCursor(cursor); Оно и понятно, мы получили копию QTextCursor и, чтобы его применить к QTextEdit, нам нужно вызвать эту функцию. Но во второй функции почему-то работает без этого, когда мы вызываем setCharFormat. Так вот. Проблема в том, что во второй функции выделение накапливается и не сбрасывается, когда меняется поисковый запрос, а в первой функции все нормально. Пытался решить эту проблему с помощью функции clearSelection() перед циклом с выделением, но не помогло. Помогло другое. Перед циклом я выделил весь текст и задал ему фоновый цвет такой, какой был: Код: cursor.setPosition(0); Может, это просто баги в Qt, не знаю. Версия Qt4.8.6. К сожалению проект большой мне достался, переводить его на другую версию Qt что-то не хочется. Название: Re: QTextEdit - выделение текста с помощью QTextCursor и функция setCharFormat() Отправлено: Ilya_181 от Август 12, 2017, 12:34 QTextCursor cursor = edit->textCursor();
// выделили текст и установили выделение желтым cursor.select(QTextCursor::Document); edit->setStyleSheet("selection-background-color: yellow"); // в какой-то функции вернули обратно синий цвет выделения edit->setStyleSheet("selection-background-color: blue"); Название: Re: QTextEdit - выделение текста с помощью QTextCursor и функция setCharFormat() Отправлено: Rododendron от Август 23, 2017, 16:35 А выделять как?
Проблема в том, что при выделении моим способом сбрасываются шрифты, не смотря на то, что я беру изначально charFormat у курсора, а программа ведет себя, будто я использую дефолтный charFormat. Задача простая: выделить несколько кусков текста в QTextEdit без потери шрифтов. Название: Re: QTextEdit - выделение текста с помощью QTextCursor и функция setCharFormat() Отправлено: Ilya_181 от Сентябрь 02, 2017, 22:43 Посмотри пример (textedit) его можешь найти в QtCreator "примеры". Возможно тебе поможет с пропаданием шрифтов.
Например там так используется установка шрифта. Код
Название: Re: QTextEdit - выделение текста с помощью QTextCursor и функция setCharFormat() Отправлено: Rododendron от Сентябрь 04, 2017, 11:34 Спасибо!! Поменял setCharFormat на mergeCharFormat, и заработало как надо.
|