【问题标题】:How to strip HTML from a text property of a Qt4 widget?如何从 Qt4 小部件的文本属性中去除 HTML?
【发布时间】:2011-03-29 03:59:45
【问题描述】:

就编码工作而言,更改 Qt4 小部件的文本属性最简单的方法是什么,例如QLabel.text,所以所有的HTML标签都被删除了?

HTML 很简单,通常只有一到三个标签,例如 or 及其关闭伙伴。

【问题讨论】:

    标签: c++ html parsing qt4


    【解决方案1】:

    如果您不想为此使用小部件,可以使用QTextDocument::toPlainText()

    QTextDocument doc;
    doc->setHtml(htmlText);
    doc->toPlainText();
    

    【讨论】:

      【解决方案2】:

      我以前用过这个,虽然这个小部件看起来有点过分了。 QtextEdit,富文本编辑块。使这项工作有效的原因是构造函数假定字符串具有标签。

      QTextEdit htmlText(HtmlText);  // HtmlText is any QString with html tags.
      QString plainText = htmlTextEdit.toPlainText();
      

      【讨论】:

      • 这看起来很方便。谢谢!
      【解决方案3】:

      听起来您实际上只是在寻找一种从字符串中去除 HTML 标记的方法,该字符串不是 Qt 小部件特有的(除非您想要一个可以利用 Qt 库的其余部分的解决方案)。无论如何,在搜索“从字符串中剥离 html”时,似乎不乏点击量。似乎有两种通用方法:

      您可能会找到一个足以满足您的目的的正则表达式,但您需要一个适当的 html 解析器才能正确完成。

      这个 stackoverflow question 有很多关于正则表达式选项的讨论(尽管问题是要去除所有标签 except 链接)。

      由于您使用的是 Qt,this question 有一个答案,其中包含使用该库中的解析器的示例。

      【讨论】:

      • 我正在使用 Qt4,并认为使用 Qt4 提供的任何东西都会更容易。一般来说,其他任何东西都可以,但我不想大惊小怪地将 QStrings 来回转换为任何其他格式。
      • 这不能怪你。我尽可能使用 QStrings。 Qt 让 C++ 对我来说非常容易接受。
      【解决方案4】:

      为什么不深入了解 QTextEdit::toPlainText() 源代码,看看那里做了什么?

      【讨论】:

      • 我没有注意到有 toPlainText() 这样的东西。凉爽的!现在看看其他小部件有什么......
      猜你喜欢
      • 2018-08-09
      • 2010-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      • 2013-05-19
      相关资源
      最近更新 更多