由于我在这里找不到合适的解决方案,我想问答这个问题:
有没有办法确定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 标记。例如,后者会从文本中删除换行符。