Saltar al contenido

QLabel: establece el color del texto y el fondo

Este escrito ha sido evaluado por expertos para que tengas la seguridad de la exactitud de nuestra esta crónica.

Solución:

La mejor y más recomendada es usar la hoja de estilo Qt.

Para cambiar el color del texto y el color de fondo de un QLabelesto es lo que yo haría:

QLabel* pLabel = new QLabel;
pLabel->setStyleSheet("QLabel  background-color : red; color : blue; ");

También puede evitar el uso de hojas de estilo Qt y cambiar el QPalette colores de tu QLabelpero puede obtener resultados diferentes en diferentes plataformas y/o estilos.

Como dice la documentación de Qt:

No se garantiza que el uso de una QPalette funcione para todos los estilos, porque los autores de estilos están restringidos por las pautas de las diferentes plataformas y por el motor de temas nativo.

Pero podrías hacer algo como esto:

 QPalette palette = ui->pLabel->palette();
 palette.setColor(ui->pLabel->backgroundRole(), Qt::yellow);
 palette.setColor(ui->pLabel->foregroundRole(), Qt::yellow);
 ui->pLabel->setPalette(palette);

Pero como dije, sugiero encarecidamente no usar la paleta y optar por la hoja de estilo Qt.

Puede usar QPalette, sin embargo, debe configurar setAutoFillBackground(true); para habilitar el color de fondo

QPalette sample_palette;
sample_palette.setColor(QPalette::Window, Qt::white);
sample_palette.setColor(QPalette::WindowText, Qt::blue);

sample_label->setAutoFillBackground(true);
sample_label->setPalette(sample_palette);
sample_label->setText("What ever text");

Funciona bien en Windows y Ubuntu, no he jugado con ningún otro sistema operativo.

Nota: Consulte QPalette, sección de función de color para obtener más detalles.

Agrego esta respuesta porque creo que podría ser útil para cualquiera.

Entro en el problema de configurar los colores RGBA (es decir, el color RGB con un valor alfa para la transparencia) para las etiquetas de visualización de color en mi aplicación de pintura.

Cuando encontré la primera respuesta, no pude establecer un color RGBA. También he probado cosas como:

myLabel.setStyleSheet("QLabel { background-color : %s"%color.name())

dónde color es un color RGBA.

Entonces, mi sucia solución fue extender QLabel y anular paintEvent() método que llena su límite rect.

Hoy, he abierto el qt-assistant y lea la lista de propiedades de referencia de estilo. Afortunadamente, tiene un ejemplo que dice lo siguiente:

QLineEdit background-color: rgb(255, 0, 0)

Eso me abre la mente al hacer algo como el siguiente código, como ejemplo:

myLabel= QLabel()
myLabel.setAutoFillBackground(True) # This is important!!
color  = QtGui.QColor(233, 10, 150)
alpha  = 140
values = "r, g, b, a".format(r = color.red(),
                                     g = color.green(),
                                     b = color.blue(),
                                     a = alpha
                                     )
myLabel.setStyleSheet("QLabel  background-color: rgba("+values+"); ")

Tenga en cuenta que setAutoFillBackground() establecer en False no hará que funcione.

Saludos,

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *