【发布时间】:2017-03-15 19:31:32
【问题描述】:
由于我无法在这里找到合适的解决方案,所以我想问答这个问题:
有没有办法确定QString 是否由 html 组成,即是否是富文本(或至少包含 html)?
table/view model 中数据编辑器的 setData 的未知/QVariant 调用可能是这种情况。
【问题讨论】:
由于我无法在这里找到合适的解决方案,所以我想问答这个问题:
有没有办法确定QString 是否由 html 组成,即是否是富文本(或至少包含 html)?
table/view model 中数据编辑器的 setData 的未知/QVariant 调用可能是这种情况。
【问题讨论】:
解决方案可以是使用Qt::mightBeRichText 代替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;
}
重要的是要注意所提出的方法uses a heuristic。它可能无法检测到 html 或错误地检测到非 html 文本中的 html。前者可能会在字符串中返回 html 标签。例如,后者会从文本中删除换行符。
【讨论】: