检查/确定QString是否包含html

check/determine if QString contains html

本文关键字:包含 html 是否 QString 确定 检查      更新时间:2023-10-16

由于我在这里找不到合适的解决方案,我想问答这个问题:

有没有办法确定QString是否由html组成,即富文本(或至少包含html(?

对于

表/视图模型中对数据编辑器setData的未知/QVariant调用,可能就是这种情况。

一个解决方案可以是使用 Qt::mightBeRichText for QString

#include <QTextDocument>
QString ensurePlainText(const QString& text)
{
    QString out;
    if (Qt::mightBeRichText(text))
    {
        // is html -> convert to plain text
        QTextDocument text;
        text.setHtml(value.toString());
        out = text.toPlainText();
    }
    else
    {
        out = text;
    }
    return out;
}

重要的是要注意,所提出的方法使用启发式方法。它可能无法检测到 html 或错误地检测非 html 文本中的 html。前者可能会在字符串中返回 html 标记。例如,后者会从文本中删除换行符。