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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Выборка html кода из QTextEdit  (Прочитано 8268 раз)
Ponter
Гость
« : Март 09, 2010, 20:09 »

Подскажите правильный путь к решению:
есть код:
QTextEdit txt;
txt->setHtml("text<a href=\"1\">Hello</a>text_2");
Ссылок может быть много.
так вот как выбрать все эти ссылки в какой-нибудь QList? То есть разделить простой текст и ссылки. Если пытаться разобрать html код, то будет гемор ибо QTextEdit html код пишет по-своему усмотрению.
Спасибо
Записан
gigabyte
Гость
« Ответ #1 : Март 09, 2010, 20:21 »

QRegExp с приблизительно такими параметрами:
QRecExp("<\s*a\s+href=(.*?)\s+>(.*?)<\s*/a\s*>")
Конечно я здесь переборщил с \s.

Записан
Ponter
Гость
« Ответ #2 : Март 09, 2010, 20:33 »

QRegExp с приблизительно такими параметрами:
QRecExp("<\s*a\s+href=(.*?)\s+>(.*?)<\s*/a\s*>")
Конечно я здесь переборщил с \s.
не понял где его использовать,каким образом?
Записан
alexman
Гость
« Ответ #3 : Март 09, 2010, 20:50 »

QXmlQuery, QDomDocument.
Записан
gigabyte
Гость
« Ответ #4 : Март 09, 2010, 21:51 »

QRegExp с приблизительно такими параметрами:
QRecExp("<\s*a\s+href=(.*?)\s+>(.*?)<\s*/a\s*>")
Конечно я здесь переборщил с \s.
не понял где его использовать,каким образом?
Его надо использовать между:
Код:
QTextEdit txt;
и
Код:
txt->setHtml("text<a href=\"1\">Hello</a>text_2");
или даже вместо setHTML просто надо при помощи QRegExp парсить текст
Записан
gigabyte
Гость
« Ответ #5 : Март 09, 2010, 21:52 »

QXmlQuery, QDomDocument.
если это XHTML тогда да, а если просто HTML - тогда это компоненты могут давать сбои
Записан
alexman
Гость
« Ответ #6 : Март 09, 2010, 22:03 »

Простой парсинг?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #7 : Март 10, 2010, 11:21 »

Может тупым перебором используя

QString QAbstractTextDocumentLayout::anchorAt ( const QPointF & position )

или

QString QTextEdit::anchorAt ( const QPoint & pos )
Записан

Qt 5.11/4.8.7 (X11/Win)
Ponter
Гость
« Ответ #8 : Март 10, 2010, 23:04 »

Спасибо всем за ответы. И еще вопрос возник: при вставке ссылки <a href=\"1\">text</a> он как и надо выводится синим цветом,но если печатать просто в QTextEdit сразу после ссылки,то набранный текст будет тоже синим,вот как можно от этого избавиться?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #9 : Март 11, 2010, 09:05 »

С этим проблемы у всех редакторов с гиперссылками.
Да и как редактор догадается, что вы не хотите продолжить текст ссылки?
Самый простой способ copy-paste пробела.
Записан

Qt 5.11/4.8.7 (X11/Win)
alexman
Гость
« Ответ #10 : Март 11, 2010, 09:12 »

Да и как редактор догадается, что вы не хотите продолжить текст ссылки?
Есть же тег </a> окончания гиперссылки!?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #11 : Март 11, 2010, 09:14 »

Есть же тег </a> окончания гиперссылки!?
Интересно, как вы этот тег будете вводить при интерактивном наборе текста?
Записан

Qt 5.11/4.8.7 (X11/Win)
Ponter
Гость
« Ответ #12 : Март 11, 2010, 20:00 »

да уж в этом и проблема...пытался делать с помощью QTextCharFormat проблема такая же, всю голову сломал)))а выполнить надо
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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