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.
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>
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.
Qt utilise un simple sous-ensemble HTML pour le formatage.
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.