Название: [Решено] Вставка ссылки в QTextEdit Отправлено: xintrea от Январь 05, 2016, 02:49 Имеется объект textArea - представитель класса QTextEdit.
Я пытаюсь сделать из выделенного фрагмента HTML-ссылку (URL ссылки в переменной refereceUrl): Код: // Устанавливается текст ссылки Ссылка устанавливается, но визуально текст не меняется (выделенный фрагмент не становится синим с подчеркиванием). Единственный способ увидеть созданную ссылку - это взять текст textArea.html и снова его установить через textArea.setHtml(html). Но это я считаю слишком дорогостоящим решением. Самое интересное, что убирание ссылки работает правильно (если устанавливаемая ссылка пустая, то синий цвет и подчеркивание убираются). А именно установка ссылки визуально работает криво - не появляется синего цвета и подчеркивания. Я грешил на разницу между mergeCharFormat() и setCharFormat(), но толку никакого, что ни пиши, ссылка визуально не отображается. Название: Re: Вставка ссылки в QTextEdit Отправлено: gil9red от Январь 05, 2016, 20:31 А через вставку html пробовали?
Название: Re: Вставка ссылки в QTextEdit Отправлено: xintrea от Январь 05, 2016, 21:03 А через вставку html пробовали? Тут дело в другом. Есть обычный абзац с текстом (привожу HTML-код): Код: <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Тут есть текст.</p> Выделяю слово "есть", нажимаю кнопку и это слово становится ссылкой (оборачивается тегом <a href="..."> через применение setAnchor(true) и setAnchorHref()), которая визуально смотрится как обычное слово: Код: <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Тут <a href="https://link.ru">есть</a> текст.</p> Сохраняю в память или на диск все HTML-содежимое QTextEdit. И снова засовываю в QTextEdit через setHtml(). При засовывании появляются дополнительные теги <span style="..."> в которых прописывается декорация ссылки: Код: <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Тут <a href="https://link.ru"><span style=" text-decoration: underline; color:#0000ff;">есть</span></a> текст.</p> Вот после этого ссылка становится синей с подчеркиванием. А мне нужно, чтобы не перегружать полностью весь текст. Если я сделаю через HTML, и сам добавлю стилизацию "text-decoration: underline; color:#0000ff;" то нет никакой гарантии, что движок Qt в следующей версии не поменяет стилизацию, не станет добавлять самостоятельно этот стиль (получится дважды), не вылезут еще какие-нибудь эффекты. Название: Re: Вставка ссылки в QTextEdit Отправлено: xintrea от Январь 05, 2016, 21:08 А через вставку html пробовали? И еще. В документации написано: Цитировать void QTextCharFormat::setAnchor(bool anchor) If anchor is true, text with this format represents an anchor, and is formatted in the appropriate way; otherwise the text is formatted normally. (Anchors are hyperlinks which are often shown underlined and in a different color from plain text.) The way the text is rendered is independent of whether or not the format has a valid anchor defined. Use setAnchorHref(), and optionally setAnchorNames() to create a hypertext link. Я этот setAnchor(true) и использую. Но то что выделено жирным не происходит. Точнее, происходит, но только после полной перезагрузки текста. Название: Re: Вставка ссылки в QTextEdit Отправлено: xintrea от Январь 05, 2016, 21:17 А через вставку html пробовали? Во, нашел. Проблема обнаружена в 2010 году и до сих пор не исправлена. http://www.forum.crossplatform.ru/index.php?showtopic=4670&mode=linearplus Название: Re: Вставка ссылки в QTextEdit Отправлено: gil9red от Январь 05, 2016, 21:39 А через вставку html пробовали? Во, нашел. Проблема обнаружена в 2010 году и до сих пор не исправлена. http://www.forum.crossplatform.ru/index.php?showtopic=4670&mode=linearplus я через html вставлял и нормально было (https://github.com/gil9red/NotesManager): Код
editor -- QTextEdit Название: Re: Вставка ссылки в QTextEdit Отправлено: xintrea от Январь 06, 2016, 01:32 Я сделал проще. Просто добавил две строчки:
Код: charFormat.setForeground(QApplication::palette().color(QPalette::Link)); Баг старый, и на него никто не обращает внимания. Просто обходят вот так и все. PS: А чего это твой NotesManager из master ветки не собирается: Код: ./ui_page_notes.h:26:50: fatal error: NavigationPanel\datenavigationwidget.h: Нет такого файла или каталога Да у тебя слеш в другую сторону... Ага, компиляция пошла, затык на линковке: Код: RichTextNote.o: In function `RichTextNote::saveAs()': Что делать? Название: Re: Вставка ссылки в QTextEdit Отправлено: gil9red от Январь 06, 2016, 02:35 После сборки QScintilla-gpl-2.8.1 и qt-solutions/qtsingleapplication не должно быть проблем :)
Да и есть релизы для винды (https://github.com/gil9red/NotesManager/releases/tag/0.0.3) Название: Re: Вставка ссылки в QTextEdit Отправлено: xintrea от Январь 06, 2016, 14:00 После сборки QScintilla-gpl-2.8.1 и qt-solutions/qtsingleapplication не должно быть проблем :) А где их брать? Как компилировать? Как подключать к твоему проекту чтобы твой проект собрался? У тебя ничего об этом в документации не написано. Да и есть релизы для винды (https://github.com/gil9red/NotesManager/releases/tag/0.0.3) Я под линух собираю. Название: Re: Вставка ссылки в QTextEdit Отправлено: gil9red от Январь 06, 2016, 15:46 После сборки QScintilla-gpl-2.8.1 и qt-solutions/qtsingleapplication не должно быть проблем :) А где их брать? Как компилировать? Как подключать к твоему проекту чтобы твой проект собрался? У тебя ничего об этом в документации не написано. Да и есть релизы для винды (https://github.com/gil9red/NotesManager/releases/tag/0.0.3) Я под линух собираю. Забейте на его сборку :) Готовилось под винду, было первым большим проектом, поэтому косяки есть, и я им защитил диплом, и после уже не возвращался к проекту :) А так, на сколько я помню, собирались qscintilla (для подсветки кода в редакторе скриптов), qtsingleapplication (поддержка запуска одного экземпляра приложения) и quazip (кажется, для сохранения заметок в виде одного файла). А после этого собирался NoteManager. После сборки тех трех, проблем с линковкой не должно возникать, теоретически :) Название: Re: Вставка ссылки в QTextEdit Отправлено: panAlexey от Январь 07, 2016, 00:30 Если хочется нормальный html редактор, то лучше смотреть в сторону sigil (https://github.com/Sigil-Ebook/Sigil)
|