Informação preliminar: Não quero usar folhas de estilo.
Eu costumo QPalette
alterar a cor do texto (primeiro plano) da QLabel
seguinte maneira:
QLabel * label = new QLabel("foobar", parent);
QPalette pal = label->palette();
pal.setColor(label->foregroundRole(), Qt::blue);
label->setPalette(pal);
E funciona como esperado.
Agora eu insiro esse rótulo em um QListWidget
:
QListWidget * list_widget = new QListWidget(parent);
QListWidgetItem * item = new QListWidgetItem(list_widget);
list_widget->addItem(item);
list_widget->setItemWidget(item, label);
item->setSizeHint(label->sizeHint());
Problema: a cor do texto é ignorada e o padrão (preto) é usado.
Pergunta: Existe uma maneira de forçar a QListWidget
exibição dos widgets fornecidos com seus respectivos widgets dedicados QPalette
? Se sim, como?
Tentei substituir a chamada para o rótulo backgroundRole()
por QPalette::WindowText
diretamente, mas não mudou nada.
Claro, no meu caso de uso real, tenho um widget personalizado que contém QLabel
s. Não faria sentido usar QListWidget::setItemWidget()
um único widget, QLabel
já que QListWidgetItem
ele já suporta texto colorido (normalmente).