Russian Qt Forum
Ноябрь 22, 2024, 01:36 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Найти и выделить слово в TextArea  (Прочитано 28570 раз)
SektorCT
Частый гость
***
Offline Offline

Сообщений: 229


Просмотр профиля
« : Март 26, 2024, 14:23 »

Всем привет.
Пытаюсь найти способ как слово которое надо найти в тексте расположенным в TextArea, найти и выделить.

Спасибо.
Записан
SektorCT
Частый гость
***
Offline Offline

Сообщений: 229


Просмотр профиля
« Ответ #1 : Март 28, 2024, 11:48 »

Может кто подкинет идею как можно выделать в нем(TextArea) нужные слова?
Записан
ssoft
Программист
*****
Offline Offline

Сообщений: 584


Просмотр профиля
« Ответ #2 : Март 28, 2024, 14:39 »

TextArea отображает разметку html, выделяемые слова можно поместить в теги, определяющие формат выделения.
Записан
Apktyc
Самовар
**
Offline Offline

Сообщений: 133


Просмотр профиля
« Ответ #3 : Март 28, 2024, 16:29 »

TextArea наследник TextEdit, а для него есть QSyntaxHighlighter
Записан
SektorCT
Частый гость
***
Offline Offline

Сообщений: 229


Просмотр профиля
« Ответ #4 : Апрель 05, 2024, 16:21 »

Нашел вариант, пробижаться по тексту и найти индекс начала и конца слова, и через метод select() с 2 аргументами выделить слово.
Но вот есдинственное что не могу найти, так это как отобразить ту область в тексте где найдено слово.
Как понимаю надо наверное перейти к курсору.
Может кто подсказать, вдруг имели опыт.
Записан
SektorCT
Частый гость
***
Offline Offline

Сообщений: 229


Просмотр профиля
« Ответ #5 : Апрель 09, 2024, 17:34 »

TextArea наследник TextEdit, а для него есть QSyntaxHighlighter

А вы случайно не пробовали такой метод для выделения?
Получается выделить слово но вот как скрол заставить на позицию того слова перейти. это не срабатывает
Записан
Apktyc
Самовар
**
Offline Offline

Сообщений: 133


Просмотр профиля
« Ответ #6 : Апрель 09, 2024, 17:55 »

Так QSyntaxHighlighter именно для подсветки, дабы сразу подсветить во всем тексте искомую фразу (при этом не искажая формат текста).

С QML не работаю, но:

У QTextEdit есть document().
У QTextDocument есть find() возвращающий QTextCursor (с выделением искомого).
Дальше QTextEdit::setTextCursor, и на всякий случай есть QTextEdit::ensureCursorVisible(), который «scrolling the text edit if necessary».

Вижу так.
Записан
SektorCT
Частый гость
***
Offline Offline

Сообщений: 229


Просмотр профиля
« Ответ #7 : Апрель 09, 2024, 20:57 »

Так QSyntaxHighlighter именно для подсветки, дабы сразу подсветить во всем тексте искомую фразу (при этом не искажая формат текста).

С QML не работаю, но:

У QTextEdit есть document().
У QTextDocument есть find() возвращающий QTextCursor (с выделением искомого).
Дальше QTextEdit::setTextCursor, и на всякий случай есть QTextEdit::ensureCursorVisible(), который «scrolling the text edit if necessary».

Вижу так.

Ну так у меня вопрос же касался Quick а не виджетов, и мне класс не нужен, и таких методов нету у меня дял применения.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #8 : Апрель 10, 2024, 09:29 »

https://doc.qt.io/qt-6/qml-qtquick-controls-textarea.html#scrollable-textarea и дальше скроллить ScrollView айтем. Как я понимаю, прямоугольник для скролла можно получить через https://doc.qt.io/qt-6/qml-qtquick-textedit.html#positionToRectangle-method
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
SektorCT
Частый гость
***
Offline Offline

Сообщений: 229


Просмотр профиля
« Ответ #9 : Апрель 10, 2024, 11:00 »

https://doc.qt.io/qt-6/qml-qtquick-controls-textarea.html#scrollable-textarea и дальше скроллить ScrollView айтем. Как я понимаю, прямоугольник для скролла можно получить через https://doc.qt.io/qt-6/qml-qtquick-textedit.html#positionToRectangle-method
Спасибо за совет, получилось сделать то что искал.
Записан
Apktyc
Самовар
**
Offline Offline

Сообщений: 133


Просмотр профиля
« Ответ #10 : Апрель 10, 2024, 14:20 »

Ну так у меня вопрос же касался Quick а не виджетов, и мне класс не нужен, и таких методов нету у меня дял применения.

Исходил из того, что QSyntaxHighlighter может сожрать QQuickTextDocument, и предполагал что остальные quick компоненты имеют идентичную функциональность. Не вышло.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #11 : Апрель 10, 2024, 15:45 »

https://doc.qt.io/qt-6/qml-qtquick-controls-textarea.html#scrollable-textarea и дальше скроллить ScrollView айтем. Как я понимаю, прямоугольник для скролла можно получить через https://doc.qt.io/qt-6/qml-qtquick-textedit.html#positionToRectangle-method
Спасибо за совет, получилось сделать то что искал.
написал бы хоть решение Улыбающийся
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.054 секунд. Запросов: 22.