Comment définir la couleur du texte et de l'arrière-plan d'un QLabel
?
La meilleure manière recommandée est d'utiliser la feuille de style Qt .
Pour changer la couleur du texte et la couleur d'arrière-plan d'un QLabel
, voici ce que je ferais:
QLabel* pLabel = new QLabel;
pLabel->setStyleSheet("QLabel { background-color : red; color : blue; }");
Vous pouvez également éviter d'utiliser les feuilles de style Qt et changer les QPalette
couleurs de votre QLabel
, mais vous pourriez obtenir des résultats différents sur différentes plates-formes et / ou styles.
Comme l'indique la documentation Qt:
L'utilisation d'une QPalette n'est pas garantie de fonctionner pour tous les styles, car les auteurs de styles sont limités par les directives des différentes plates-formes et par le moteur de thème natif.
Mais vous pouvez faire quelque chose comme ceci:
QPalette palette = ui->pLabel->palette();
palette.setColor(ui->pLabel->backgroundRole(), Qt::yellow);
palette.setColor(ui->pLabel->foregroundRole(), Qt::yellow);
ui->pLabel->setPalette(palette);
Mais comme je l'ai dit, je suggère fortement de ne pas utiliser la palette et d'opter pour la feuille de style Qt.
color
attribut est inefficace. Uniquement via HTML,<font color="#FFFFFF">...</font>
j'ai pu définir la couleur de la police (en blanc dans ce cas.color: ;
comme une «réinitialisation» semble le faire, mais est-ce une bonne pratique ou existe-t-il une meilleure méthode?Vous pouvez utiliser QPalette, mais vous devez définir
setAutoFillBackground(true);
pour activer la couleur d'arrière-planCela fonctionne bien sur Windows et Ubuntu, je n'ai joué avec aucun autre système d'exploitation.
Remarque: veuillez consulter QPalette , section des rôles de couleur pour plus de détails
la source
J'ajoute cette réponse parce que je pense qu'elle pourrait être utile à n'importe qui.
J'entre dans le problème de la définition des couleurs RGBA (c'est-à-dire une couleur RVB avec une valeur Alpha pour la transparence) pour les étiquettes d'affichage couleur dans mon application de peinture.
Lorsque je suis tombé sur la première réponse, je n'ai pas pu définir une couleur RGBA. J'ai également essayé des choses comme:
myLabel.setStyleSheet("QLabel { background-color : %s"%color.name())
où
color
est une couleur RGBA.Donc, ma solution sale était d'étendre
QLabel
et de remplacer lapaintEvent()
méthode remplissant son rectangle de délimitation.Aujourd'hui, j'ai ouvert
qt-assistant
et lu la liste des propriétés de référence de style . Heureusement, il a un exemple qui indique ce qui suit:QLineEdit { background-color: rgb(255, 0, 0) }
Cela m'ouvre l'esprit en faisant quelque chose comme le code ci-dessous, à titre d'exemple:
Notez que le
setAutoFillBackground()
paramétrageFalse
ne le fera pas fonctionner.Cordialement,
la source
La SEULE chose qui a fonctionné pour moi était le html.
Et j'ai trouvé que c'était beaucoup plus facile à faire que n'importe quelle approche programmatique.
Le code suivant modifie la couleur du texte en fonction d'un paramètre passé par un appelant.
la source
<font/>
balise (et c'est quelque chose de plus familier aux gens HTML: D) et pas seulement une couleur, donc cela vous donne une plus grande flexibilité.La meilleure façon de définir une fonctionnalité concernant les couleurs de tout widget est d'utiliser QPalette .
Et le moyen le plus simple de trouver ce que vous recherchez est d'ouvrir Qt Designer et de définir la palette d'un QLabel et de vérifier le code généré.
la source
Celui-ci fonctionne parfaitement
getColor()
renvoie la couleur sélectionnée. Vous pouvez changer la couleur de l'étiquette en utilisantstylesheet
la source