2009-09-23 13 views
31

Je souhaite écrire une seule ligne rouge en gras dans mon application en utilisant Qt.Comment créer une étiquette de texte rouge en gras dans Qt?

Pour autant que je comprends, je créerais un QLabel, définissez son textFormat texte enrichi et lui donner une riche chaîne de texte à afficher:

QLabel *warning = new QLabel; 
warning->setTextFormat(Qt::RichText); 
warning->setText("{\\rtf1\\ansi\\ansicpg1252 {\\fonttbl\\f0\\fswiss\\fcharset0 Helvetica;} {\\colortbl;\\red255\\green0\\blue0;} \\f0 \\cf0 this is bold red text}"); 

J'ai testé cette riche chaîne de texte dans un éditeur de texte enrichi et ça se voit bien.

Mais Qt affiche la chaîne entière avec toutes les accolades, les mots-clés et les barres obliques inverses au lieu de "ceci est du texte en gras rouge". Qu'est-ce que je fais mal?

Nous vous remercions de votre aide. Essayez d'utiliser le formatage HTML: <b><font... etc </b>.

Répondre

52

Qt Designer ne comme ceci: <span style=" font-size:8pt; font-weight:600; color:#aa0000;">TextLabel</span>

+11

Vous devrez peut-être définir l'attribut textFormat de QLabel sur Qt :: RichText. – dwj

3

Vous pouvez également le faire par programmation en utilisant la fonction settext. Quelque chose comme ceci:

QString labelText = "<P><b><i><FONT COLOR='#ff0000' FONT SIZE = 4>"; 
labelText .append(Text what u want to display); 
labelText .append("</i></b></P></br>"); 
QLabel label->setText(labelText); 

Vous pouvez le faire dans une seule ligne aussi bien.

12

Vous pouvez utiliser Qt StyleSheets et définir la propriété styleSheet de QLabel

warning->setStyleSheet("font-weight: bold; color: red"); 

Qt prend en charge la plupart des styles CSS sur ses QWidget des classes dérivée de. Vous n'avez pas besoin de définir le format de texte sur Qt::RichText pour que cela fonctionne.

+0

Merci beaucoup. ça a marché pour moi :) –