QTextEdit и подсветка предложения. |
Здравствуйте, гость ( Вход | Регистрация )
QTextEdit и подсветка предложения. |
hkarel |
8.11.2010, 17:13
Сообщение
#1
|
Студент Группа: Участник Сообщений: 25 Регистрация: 25.5.2009 Пользователь №: 771 Спасибо сказали: 0 раз(а) Репутация: 0 |
Здравствуйте.
Имеется произвольный текст. Текст может содержать несколько абзацев. В абзаце может быть несколько предложений. Задача состоит в том, чтобы при перемещении курсора мыши над участками текста подсвечивалось предложение над которым находится курсор. Так же необходимо "понимать" какое предложение подсвечено, т.е. получать текст этого предложения, или любой адекватный идентификатор. Если говорить об аналогиях, то переведенный текст (несколько предложений) на странице гугл-переводчика как раз реализуют заданное поведение. В качестве реализации необязательно использовать QTextEdit, возможен любой наиболее подходящий компонент. Надеюсь на советы опытных разработчиков! |
|
|
panter_dsd |
8.11.2010, 17:37
Сообщение
#2
|
Жаждущий знаний Группа: Участник Сообщений: 254 Регистрация: 1.1.2009 Из: Санкт-Петербург Пользователь №: 474 Спасибо сказали: 32 раз(а) Репутация: 3 |
Почитай про QSyntaxHighlighter.
|
|
|
Litkevich Yuriy |
8.11.2010, 23:18
Сообщение
#3
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
hkarel |
9.11.2010, 11:43
Сообщение
#4
|
Студент Группа: Участник Сообщений: 25 Регистрация: 25.5.2009 Пользователь №: 771 Спасибо сказали: 0 раз(а) Репутация: 0 |
Почитай про QSyntaxHighlighter. Почитал. В принципе это могло бы подойти, но у меня имеется еще и динамическая составляющая - передвижение курсора мыши, так же есть подозрение, что QSyntaxHighlighter не позволит получить общее решение - об этом ниже. Подробнее о задаче: программа выполняет перевод текста при помощи гугл-сервиса переводов. На входе у меня есть абзац состоящий из нескольких предложений. "Кормим" его серверу, в ответ получаем список пар предложений из этого абзаца. Каждая пара представляет оригинал-перевод. Если бы мы всегда получали русскоязычный перевод, то можно было бы определять границы предложения по первой заглавной букве и точке в конце предложения. Вариант решения - так себе, но какой есть... В общем же случае такое решение неприемлемо - предположим, что переводить будем на китайский... Вот если бы в начало и конец предложения можно было бы вставлять некие маркеры, по которым можно было бы определять область подсветки. Возможно это могли бы быть какие-то непечатаемые символы или, возможно, текст разграничить какими-то html-тегами. Это только идея, как реализовать это технически я пока не понимаю. Поэтому моя просьба о советах остается актуальной. |
|
|
molchanoviv |
10.11.2010, 10:50
Сообщение
#5
|
Старейший участник Группа: Сомодератор Сообщений: 597 Регистрация: 18.7.2008 Из: Саратов Пользователь №: 238 Спасибо сказали: 41 раз(а) Репутация: 5 |
На русском языке это сделать не сложно вясняем позицию курсора мыши QCurosr::pos() затем с помощью QTextEdit::cursorForPosition(const QPoint & pos) получаем QTextCursor и вычленяем нужное предложение. От начала текста до точки, от точки до точки или от точки до конца текста. Кстати не в курсе как в китайском тексте а в японском точка обозначается как "。", так-что я думаю и в Китайском что-то такое есть. Составишь пару регулярок для отсечения текста до позиции курсора и после и укажешь в них в качестве разделителя (.|。|что-то еще).
|
|
|
Текстовая версия | Сейчас: 26.12.2024, 23:26 |