crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> 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


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(panter_dsd @ 8.11.2010, 20:37) *
Почитай про QSyntaxHighlighter.
что-то я сомневаюсь, что он подойдёт
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
hkarel
  опции профиля:
сообщение 9.11.2010, 11:43
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 25
Регистрация: 25.5.2009
Пользователь №: 771

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




Репутация:   0  


Цитата(panter_dsd @ 8.11.2010, 18:37) *
Почитай про 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 и вычленяем нужное предложение. От начала текста до точки, от точки до точки или от точки до конца текста. Кстати не в курсе как в китайском тексте а в японском точка обозначается как "。", так-что я думаю и в Китайском что-то такое есть. Составишь пару регулярок для отсечения текста до позиции курсора и после и укажешь в них в качестве разделителя (.|。|что-то еще).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 1.6.2020, 7:30