web-dev-qa-db-fra.com

Comment créer une étiquette de texte rouge et en gras dans Qt?

Je veux écrire une seule ligne rouge en gras dans ma candidature en utilisant Qt.

Pour autant que je comprends, je créerais un QLabel, définirais son textFormat en texte riche et lui donnerais une chaîne de texte riche à 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 chaîne de texte riche dans un éditeur de texte riche et elle s'affiche très bien.

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

Merci de votre aide.

35
bastibe

Essayez d'utiliser le formatage HTML: <b><font... etc </b>.

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

59
rpg

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 classes dérivées QWidget. Vous n'avez pas besoin de définir le format de texte sur Qt::RichText pour que cela fonctionne.

19
code-tinkerer

Qt utilise un simple sous-ensemble HTML pour le formatage.

13
gnud

Vous pouvez également le faire par programme en utilisant la fonction settext. Quelque chose comme ça:

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 également le faire sur une seule ligne.

3
Ramya B