2013-06-04 4 views
2

L'utilisateur sera en mesure de mettre du texte dans un QLineEdit dans un environnement Qt. Cependant, ces textes d'entrée peuvent contenir des caractères spéciaux HTML. Mon but est de convertir ce texte en remplaçant toutes les occurrences de caractères spéciaux HTML par des substituts.Convertir QString en texte avec des substituts pour les caractères spéciaux HTML (par exemple les balises)

Un cas similaire se trouve dans PHP avec la fonction htmlspecialchars() http://php.net/manual/en/function.htmlspecialchars.php.

La raison principale pour laquelle je veux faire ceci est parce que je veux afficher l'entrée d'utilisateur dans un texte enrichi QTextEdit et je ne veux pas que l'utilisateur puisse changer HTML et je souhaite pouvoir employer des caractères spéciaux HTML sans trop de tracas.

Comment cela peut-il être réalisé?

Répondre

1

Le Je sais que moyen le plus simple est d'utiliser QTextEdit::toHtml:

QString convert(); 
{ 
    QString s = lineEdit->text(); 
    QTextEdit textEdit; 
    textEdit.setPlainText(s); 
    QString ret = textEdit.toHtml(); 
    int firstClosingTag = ret.indexOf("</p></body></html>"); 
    int lastOpeningTag = ret.lastIndexOf(">", firstClosingTag); 
    return ret.mid(lastOpeningTag + 1, firstClosingTag - lastOpeningTag - 1); 
} 

Il y a aussi deux fonctions que vous pourriez trouver utiles:

Qt::convertFromPlainText() et Qt::escape()

+0

Votre solution ne fonctionne pas. La chaîne QString contient toujours des balises, alors qu'elle devrait remplacer les caractères spéciaux html, par ex. chaque Bear

+0

Ok, j'ai mal compris la question, voici la nouvelle solution. – Amartel

+0

Qt :: escape va résoudre mon problème je pense. Merci! – Bear

Questions connexes