Название: Найти и выделить слово в TextArea Отправлено: SektorCT от Март 26, 2024, 14:23 Всем привет.
Пытаюсь найти способ как слово которое надо найти в тексте расположенным в TextArea, найти и выделить. Спасибо. Название: Re: Найти и выделить слово в TextArea Отправлено: SektorCT от Март 28, 2024, 11:48 Может кто подкинет идею как можно выделать в нем(TextArea) нужные слова?
Название: Re: Найти и выделить слово в TextArea Отправлено: ssoft от Март 28, 2024, 14:39 TextArea отображает разметку html, выделяемые слова можно поместить в теги, определяющие формат выделения.
Название: Re: Найти и выделить слово в TextArea Отправлено: Apktyc от Март 28, 2024, 16:29 TextArea наследник TextEdit, а для него есть QSyntaxHighlighter (https://doc.qt.io/qt-5/qsyntaxhighlighter.html)
Название: Re: Найти и выделить слово в TextArea Отправлено: SektorCT от Апрель 05, 2024, 16:21 Нашел вариант, пробижаться по тексту и найти индекс начала и конца слова, и через метод select() с 2 аргументами выделить слово.
Но вот есдинственное что не могу найти, так это как отобразить ту область в тексте где найдено слово. Как понимаю надо наверное перейти к курсору. Может кто подсказать, вдруг имели опыт. Название: Re: Найти и выделить слово в TextArea Отправлено: SektorCT от Апрель 09, 2024, 17:34 TextArea наследник TextEdit, а для него есть QSyntaxHighlighter (https://doc.qt.io/qt-5/qsyntaxhighlighter.html) А вы случайно не пробовали такой метод для выделения? Получается выделить слово но вот как скрол заставить на позицию того слова перейти. это не срабатывает Название: Re: Найти и выделить слово в TextArea Отправлено: Apktyc от Апрель 09, 2024, 17:55 Так QSyntaxHighlighter именно для подсветки, дабы сразу подсветить во всем тексте искомую фразу (при этом не искажая формат текста).
С QML не работаю, но: У QTextEdit есть document(). У QTextDocument есть find() возвращающий QTextCursor (с выделением искомого). Дальше QTextEdit::setTextCursor, и на всякий случай есть QTextEdit::ensureCursorVisible(), который «scrolling the text edit if necessary». Вижу так. Название: Re: Найти и выделить слово в TextArea Отправлено: SektorCT от Апрель 09, 2024, 20:57 Так QSyntaxHighlighter именно для подсветки, дабы сразу подсветить во всем тексте искомую фразу (при этом не искажая формат текста). С QML не работаю, но: У QTextEdit есть document(). У QTextDocument есть find() возвращающий QTextCursor (с выделением искомого). Дальше QTextEdit::setTextCursor, и на всякий случай есть QTextEdit::ensureCursorVisible(), который «scrolling the text edit if necessary». Вижу так. Ну так у меня вопрос же касался Quick а не виджетов, и мне класс не нужен, и таких методов нету у меня дял применения. Название: Re: Найти и выделить слово в TextArea Отправлено: kambala от Апрель 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
Название: Re: Найти и выделить слово в TextArea Отправлено: SektorCT от Апрель 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 Спасибо за совет, получилось сделать то что искал.Название: Re: Найти и выделить слово в TextArea Отправлено: Apktyc от Апрель 10, 2024, 14:20 Ну так у меня вопрос же касался Quick а не виджетов, и мне класс не нужен, и таких методов нету у меня дял применения. Исходил из того, что QSyntaxHighlighter может сожрать QQuickTextDocument, и предполагал что остальные quick компоненты имеют идентичную функциональность. Не вышло. Название: Re: Найти и выделить слово в TextArea Отправлено: kambala от Апрель 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 Спасибо за совет, получилось сделать то что искал. |