Como faço para definir a cor do texto e o plano de fundo de a QLabel
?
179
A maneira melhor e recomendada é usar a folha de estilos Qt .
Para alterar a cor do texto e a cor de fundo de a QLabel
, eis o que eu faria:
QLabel* pLabel = new QLabel;
pLabel->setStyleSheet("QLabel { background-color : red; color : blue; }");
Você também pode evitar o uso de folhas de estilo Qt e alterar as QPalette
cores do seu QLabel
, mas poderá obter resultados diferentes em diferentes plataformas e / ou estilos.
Como a documentação do Qt indica:
Não é garantido que o uso de um QPalette funcione para todos os estilos, porque os autores de estilos são restritos pelas diretrizes das diferentes plataformas e pelo mecanismo de tema nativo.
Mas você poderia fazer algo assim:
QPalette palette = ui->pLabel->palette();
palette.setColor(ui->pLabel->backgroundRole(), Qt::yellow);
palette.setColor(ui->pLabel->foregroundRole(), Qt::yellow);
ui->pLabel->setPalette(palette);
Mas como eu disse, sugiro fortemente que não use a paleta e vá para a folha de estilos Qt.
color
atributo é ineficaz. Só via HTML<font color="#FFFFFF">...</font>
eu era capaz de definir a cor da fonte (ao branco neste caso.color: ;
como um 'reset' parece fazer isso, mas é uma boa prática ou existe um método melhor?Você pode usar o QPalette, no entanto, você deve definir
setAutoFillBackground(true);
para ativar a cor de fundoFunciona bem no Windows e no Ubuntu, não joguei com nenhum outro sistema operacional.
Nota: Consulte QPalette , seção de função de cores para obter mais detalhes
fonte
Acrescento esta resposta porque acho que pode ser útil para qualquer pessoa.
Eu me deparo com o problema de definir cores RGBA (ou seja, cores RGB com um valor Alpha para transparência) para etiquetas de exibição em cores no meu aplicativo de pintura.
Como me deparei com a primeira resposta, não consegui definir uma cor RGBA. Eu também tentei coisas como:
myLabel.setStyleSheet("QLabel { background-color : %s"%color.name())
onde
color
é uma cor RGBA.Portanto, minha solução suja foi estender
QLabel
e substituir opaintEvent()
método que preenche seu retângulo delimitador.Hoje, abri
qt-assistant
e li a lista de propriedades de referência de estilo . Felizmente, ele tem um exemplo que afirma o seguinte:QLineEdit { background-color: rgb(255, 0, 0) }
Isso me abre a mente para fazer algo como o código abaixo, como um exemplo:
Observe que
setAutoFillBackground()
definirFalse
não fará com que funcione.Saudações,
fonte
A única coisa que funcionou para mim foi o html.
E achei muito mais fácil do que qualquer uma das abordagens programáticas.
O código a seguir altera a cor do texto com base em um parâmetro passado por um chamador.
fonte
<font/>
tag (e é algo mais familiar para as pessoas em HTML: D) e não apenas uma cor, portanto, oferece maior flexibilidade.A melhor maneira de definir qualquer recurso referente às cores de qualquer widget é usar o QPalette .
E a maneira mais fácil de encontrar o que você está procurando é abrir o Qt Designer e definir a paleta de um QLabel e verificar o código gerado.
fonte
Este está funcionando perfeitamente
getColor()
O método retorna a cor selecionada. Você pode alterar a cor da etiqueta usandostylesheet
fonte