QLabel: Conjunto de color de texto y el fondo
Pregunta
¿Cómo puedo configurar el color del texto y el fondo de un QLabel
?
Solución
La forma mejor y más recomendable es utilizar la hoja Qt Estilo .
Para cambiar el color del texto y el color de fondo de un QLabel
, aquí es lo que haría:
QLabel* pLabel = new QLabel;
pLabel->setStyleSheet("QLabel { background-color : red; color : blue; }");
También se puede evitar el uso de hojas de estilo Qt y cambiar los colores de su QPalette
QLabel
, pero es posible obtener diferentes resultados en diferentes plataformas y / o estilos.
Como Qt estados de documentación:
El uso de un QPalette no se garantiza que funcione para todos los estilos, ya que los autores de estilo están restringidas por las directrices de las diferentes plataformas y por el motor del tema natal.
Pero se puede 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, recomiendo no utilizar la paleta e ir a por Qt hojas de estilo.
Otros consejos
Puede utilizar QPalette, sin embargo debe configurar para permitir setAutoFillBackground(true);
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 cualquier otro sistema operativo.
Nota: Por favor, vea QPalette , sección de papel de color para más detalles
añadir esta respuesta porque creo que podría ser útil para nadie.
entro en el problema de crear colores RGBA (es decir, de color RGB con una alfa valor de transparencia) para etiquetas de visualización del color en la pintura de mi solicitud.
Como me encontré con la primera respuesta, yo era incapaz de establecer un color RGBA. También he intentado cosas como:
myLabel.setStyleSheet("QLabel { background-color : %s"%color.name())
donde color
es un color RGBA.
Por lo tanto, mi solución sucia era extender método QLabel
y paintEvent()
anulación llenar su rect delimitador.
Hoy, he abrir el qt-assistant
y leer la estilo de lista de propiedades de referencia . Affortunately, tiene un ejemplo que establece lo siguiente:
QLineEdit { background-color: rgb(255, 0, 0) }
Eso es abierto a la idea de hacer algo como el código de abajo, como un 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 en conjunto setAutoFillBackground()
False
no hacer que funcione.
Saludos,
La única cosa que trabajó para mí era html.
Y he encontrado que es el más fácil de hacer que cualquiera de los enfoques programáticos.
El código siguiente cambia el color del texto en base a un parámetro pasado por una persona que llama.
enum {msg_info, msg_notify, msg_alert};
:
:
void bits::sendMessage(QString& line, int level)
{
QTextCursor cursor = ui->messages->textCursor();
QString alertHtml = "<font color=\"DeepPink\">";
QString notifyHtml = "<font color=\"Lime\">";
QString infoHtml = "<font color=\"Aqua\">";
QString endHtml = "</font><br>";
switch(level)
{
case msg_alert: line = alertHtml % line; break;
case msg_notify: line = notifyHtml % line; break;
case msg_info: line = infoHtml % line; break;
default: line = infoHtml % line; break;
}
line = line % endHtml;
ui->messages->insertHtml(line);
cursor.movePosition(QTextCursor::End);
ui->messages->setTextCursor(cursor);
}
La mejor manera de establecer cualquier característica con respecto a los colores de cualquier tipo de artilugio es usar QPalette .
Y la forma más fácil de encontrar lo que busca es abrir Qt Designer y establecer la paleta de un QLabel y comprobar el código generado.
Éste está trabajando
QColorDialog *dialog = new QColorDialog(this);
QColor color= dialog->getColor();
QVariant variant= color;
QString colcode = variant.toString();
ui->label->setStyleSheet("QLabel { background-color :"+colcode+" ; color : blue; }");
método getColor()
devuelve el color seleccionado.
Puede cambiar el color de la etiqueta usando stylesheet