QTextCursor et insertion de HTML
Bonjour
Je récupère du texte sélectionner avec
Code:
QString selection = descTextEdit->textCursor().selectedText();
Ensuite je modifie la sélection pour lui ajouter une balise html(<b> par exemple) et ensuite je l'insère pour remplacer la sélection:
Code:
descTextEdit->textCursor().insertHtml(selection);
Mon problème c'est que je n'ai aucune idée de comment faire pour récupérer le text pour savoir si la sélection est déja en gras. Donc une fois que j'insère "<b>Allo</b>" je ne suis pas capable de récupérer cette chaine exacte.
La fonction selectedText() ne renvoie que Allo alors que selection().toHtml() renvoie un fragment HTML qui contient un énorme bout de code HTML.
Comment puis-je faire?
Savoir si un texte est en gras
Sinon, il ya une solution, tu verifie que le texte est en gras avant de le convertir en Html.
Voici un extrait d'un de mes codes, les variables ne sont surement pas cohérente avec les variables de l'exemple.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| void FenetrePrincipale::selectionChange()
{
//On récupère le format actuel (en gras, en souligné, en italique)
QTextCharFormat actuelFormat = zoneDeveloppement->currentCharFormat();
//Pour information zoneDeveloppement est un objet de type QTextEdit
//On vérifie si le texte est en gras
if (actuelFormat.fontWeight() == QFont::Bold)
{
//On sait que le texte est en gras
}
else
{
//Le texte n'est pas en gras
}
//On vérifie si le texte est souigné
if (actuelFormat.fontUnderline())
{
//Le texte est souligné
}
else
{
//Le texte n'est pas souligné
}
//On vérifie si le texte est en italique
if (actuelFormat.fontItalic())
{
//Le texte est en italique
}
else
{
//Le texte n'est pas en italique
}
} |
tester caractères gras dans textcursor
Bonjour,
La solution serait peut être de récuperer le blockFormat du curseur, de là récupérer le Qfont avec currentFont, Qfont a une propriété weight qui retourne un int pouvant avoir la valeur QFont::Bold que tu peux tester.
J'ai essayé de faire un code en conséquence mais je bloque à ça :
Code:
1 2
|
QTextBlockFormat format=cursor->blockFormat(); |
qui me retourne l'erreur suivante à la compilation :
base operand of '->' has non-pointer type 'QTextCursor'
si je trouve viendrais compléter, sinon j'espère t'avoir aidé
suite je suis pas réveillé ...
Voici un code qui compile mais qui n'est pas encore opérationnel :
Code:
1 2 3 4
| QTextCursor cursor=bloctexte->textCursor(); // recup curseur
QTextCharFormat format=cursor.blockCharFormat();
QFont font=format.font();
if (font.weight()==QFont::Bold) qDebug<<"cararactere gras\n" |