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 QLabel
esto 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 QLabel
pero 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,