IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Mise en gras de texte dans QTextEdit

  1. #1
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 327
    Par défaut Mise en gras de texte dans QTextEdit
    Bonsoir à tous,

    Je cherche à mettre une partie de texte sélectionné dans un QTextEdit en gras.

    Je ne dois pas être très loin.

    Voici mon code : mon QTextEdit s'appele bloctexte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    QString selectiontexte=bloctexte->textCursor().selectedText();
    bloctexte->textCursor().removeSelectedText();
    bloctexte->textCursor().insertText("<b>"+selectiontexte+"</b>");
    J'ai vu qu'il y avait QTextEdit::insertPlainText mais je je n'ai pas de fonction de type QTextEdit::insertHtmlText

    En résultat j'ai mon texte encadré par <b> et </b>, je pense que bloctexte ne sait pas que je lui donne du HTML.

    J'ai essayé aussi avec <span style=\"bold\"> pas mieux.
    Par ailleurs, suis-je obligé de détruire le texte selectionné pour le recréer complété,je ne pense pas.

    Merci pour votre aide.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    Plutôt que d'utiliser une "lourde" opération, tu peux utiliser les styleSheets. Si tu as fait bloctext->setObjectName("bloctexte"); :

    Code CSS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    QLineEdit#bloctexte {
        font-weight: bold;
    }

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2010
    Messages : 248
    Par défaut
    Utilises-tu d'autre caractère de formatage, qui ne sont pas des balises html, comme \n, \t, etc... ??

    J'avais rencontré ce genre de problème et si je me souviens bien, Qt essaye de deviner le format du texte que tu lui donne et de s'adapter.

    Par exemple, si tu met le texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Texte normal <b>texte gras</b>"
    , cela devrait fonctionner et t'afficher correctement les texte en gras.

    Par contre si tu utilise d'autre caractère de formatage (comme \n \t, etc):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Texte normal \n <b>texte gras</b>"
    ,
    Les balise html ne sont par reconnues, car Qt reconnais une string standard, dûe au \n.

    Dans ce cas la solution est de remplacer le caractère de formatage pas une balise html, comme "<br>" pour "\n" par exemple.

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 327
    Par défaut c'est pas ça
    Merci Goijir, mais c'est pas ça
    Par contre c'est bon à savoir.

    J'ai essayé en chargeant un fichier html.

    Voici mon code ( je vais à l'essentiel ) :

    la partie "initialisation"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    QString texte;
     
    QTextStream flux(&fichier);
    texte=flux.readAll();
    bloctexte=new QTextEdit();
    hboxlayout->addWidget(bloctexte);
    bloctexte->SetHtml(texte);
    fichier.close();
    La partie dans un slot pour mettre en gras une zone sélectionnée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    QString selectiontexte=bloctexte->textCursor().selectedText();
    selectiontexte="<b>"+selectiontexte+</b>";
    bloctexte->textCursor().insertText(selectiontexte);
    L'insertiion fonctionne mais m'affiche littéralement <b>[texte ayant été selectionné]</b>

    Je ne sait pas pourquoi la partie rajoutée n'est pas traitée comme de l'html, je présumes que c'est lié à l'objet QString.

    Est-ce que qq1 peut me corriger ?

    J'ai essayé de remplacer QString par Qlabel sans y arriver, je voulais essayer de récupérer tout mon texte dans un QString avec par exemple bloctexte2=bloctexte->toplainText(); ( ou toHtml ) afin de rebalancer le contenu après via setHtml sans plus de résultat.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mettre en gras du texte dans un MSGBOX
    Par gantec dans le forum Général VBA
    Réponses: 20
    Dernier message: 21/09/2013, 20h52
  2. Mise en forme du texte dans un GtkTextView
    Par Franck.H dans le forum Contribuez
    Réponses: 0
    Dernier message: 21/11/2009, 14h27
  3. pd de mise en place de text dans du js
    Par HwRZxLc4 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 28/04/2007, 00h20
  4. VBA/Excel "Mise en forme de texte dans des cellules"
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/03/2007, 16h20
  5. Garder la mise en forme de texte dans un champ
    Par dany13 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 26/07/2005, 14h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo