Как убрать HTML из свойства text виджета Qt4? - PullRequest
2 голосов
/ 13 августа 2010

Какой самый простой способ с точки зрения написания кода - изменить текстовое свойство виджета Qt4, например, QLabel.text, чтобы удалить все HTML-теги?

HTML-код прост, как правило, от одного до трех тегов, таких как или их закрывающие партнеры.

Ответы [ 4 ]

5 голосов
/ 28 августа 2012

Если вы не хотите использовать виджет для этого, вы можете использовать QTextDocument :: toPlainText ()

QTextDocument doc;
doc->setHtml(htmlText);
doc->toPlainText();
2 голосов
/ 13 августа 2010

Я использовал это в прошлом, хотя виджет кажется излишним. QtextEdit , блок редактирования расширенного текста. Что делает эту работу, так это то, что конструктор предполагает, что в строке есть теги.

QTextEdit htmlText(HtmlText);  // HtmlText is any QString with html tags.
QString plainText = htmlTextEdit.toPlainText();
0 голосов
/ 13 августа 2010

Почему бы не заглянуть под капот в исходном коде QTextEdit :: toPlainText () и посмотреть, что там делается?

0 голосов
/ 13 августа 2010

Похоже, вы действительно просто ищете способ вырезать теги HTML из строки, которая не является чем-то специфичным для виджетов Qt (если вам не нужно решение, которое может использовать преимущества остальной части библиотеки Qt). Во всяком случае, похоже, что при поиске «strip html from string» не хватает недостатков. Кажется, есть 2 общих подхода:

Вы можете найти регулярное выражение, которое будет достаточно для ваших целей, но вам понадобится правильный html-анализатор, чтобы сделать это правильно.

Этот стекопоток вопрос имеет много дискуссий о параметре регулярного выражения (хотя вопрос состоит в том, чтобы убрать все теги кроме ссылок).

Поскольку вы используете Qt, на этот вопрос есть ответ с примерами использования парсера из этой библиотеки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...