Pregunta

¿Cómo puedo configurar el color del texto y el fondo de un QLabel?

¿Fue útil?

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.

perfecta

É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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top