LINUX.ORG.RU

[Qt][развелось тут] QTextDocument и html

 


0

0

Чтобы получить некую инфу из html-я юзаю QTextDocument. При этом в html есть несколько картинок-ссылок: <a href=«blah.html»><img src=«blah.jpg» /></a>

Сейчас пробегаю по всем QTextBlock, получаю text(), вывожу в stdout. В дальнейшем добавится фильтрация и обработка нужных данных. Там, где попадаются эти картинки, выводится  (что вполне понятно).

Однако в программе хотелось бы узнать является ли текущий блок картинкой, а заодно заполучить строчки «blah.html» и «blah.jpg». По первому пункту пытался через b.blockFormat().objectType(): возвращает NoObject. Есть ли у кого какие-нибудь идеи по обоим пунктам? Реально ли это сделать через QTextDocument или надо писать дополнительный код? Что может помочь (кроме регэкспов)?

Прикручивать html-парсеры на данном этапе разработки точно не буду, да и в будущем вряд ли.

PS: ничего полезного в примерах не нашел, в гугле тоже.

★★

QTextDocument::allFormats () возвращает список используемых форматов в документе. Метод QTextBlock::blockFormatIndex () возвращает индекс, по нему из списка форматов берешь нужный QTextFormat и вызываешь метод isImageFormat (). Наверное так.

smh ★★★
()
Ответ на: комментарий от smh

спасибо за ответ.
попробовал.
похоже, в allFormats() действительно есть isImageFormat()==1, но, увы, пробегая по всем QTextBlock, ни один на него почему-то не ссылается.

посмотрю, можно ли получить от QTextDocument список объектов заранее заданного формата.

xydo ★★
() автор топика

параллельный вопрос: насколько долго разбираться с QtWebKit по сравнению с QTextDocument?

xydo ★★
() автор топика
Ответ на: комментарий от xydo

похоже, в allFormats() действительно есть isImageFormat()==1, но, увы, пробегая по всем QTextBlock, ни один на него почему-то не ссылается.

Попробуй что-нибудь такое для блоков:

for (QTextBlock::iterator i = textBlock.begin(); !i.atEnd(); i++) 
{
  QTextFormat textFormat = i.fragment().charFormat();
  if (textFormat.isImageFormat())
    {
    QTextImageFormat textImageFormat = textFormat.toImageFormat ();
    // textImageFormat.name(); // имя файла
    }
}

smh ★★★
()
Ответ на: комментарий от smh

круто!
работает!
спасибо!
даже получил blah.jpg.
blah.html искать, как я понимаю, по такому же принципу? (откатить итератор, сделать магические преобразования, и получить name())??

xydo ★★
() автор топика
Ответ на: комментарий от xydo

Всё! разобрался.
в QTextCharFormat есть isAnchor и anchorHref.
правда, Anchor стоит после Image (насколько далеко, пока не проверял).

smh, спасибо за помощь!!

</thread>

xydo ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.