2017-03-15 47 views
0

因爲我沒能在這裏找到合適的解決方案,我想與Q &一個這樣的問題:檢查/確定的QString包含HTML

有沒有一種方法,以確定是否QString是由HTML的,即富文本,(或至少,包含HTML)?

這可能是table/view model中的數據編輯器的未知/ QVariant調用setData的情況。

回答

1

一個解決方案可以是使用Qt::mightBeRichTextQString

#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標籤。例如,後者會從文本中去掉換行符。