Qt so ändern Sie die Hervorhebungsfarbe eines bestimmten QComboBox Element

Ich versuche, mich das highlight transparent für eine QComboBox. Die Farbe dieses QComboBox auch änderungen basierend auf dem ausgewählten index. Hier ist meine beste Lösung bisher:

switch(comboBox->currentIndex())
{
case 0:
    comboBox->setStyleSheet("QWidget {color:black}");
    break;

case 1:
    comboBox->setStyleSheet("QWidget {background-color:red; color:white;}");
    break;

case 2:
    comboBox->setStyleSheet("QWidget {background-color:green; color:white;}");
    break;
}


comboBox->setItemData(0, QColor(Qt::white), Qt::BackgroundRole);
comboBox->setItemData(0, QColor(Qt::black), Qt::ForegroundRole);
comboBox->setItemData(1, QColor(Qt::red), Qt::BackgroundRole);
comboBox->setItemData(1, QColor(Qt::white), Qt::ForegroundRole);
comboBox->setItemData(2, QColor(Qt::darkGreen), Qt::BackgroundRole);
comboBox->setItemData(2, QColor(Qt::white), Qt::ForegroundRole);

QPalette p = comboBox->palette();
p.setColor(QPalette::Highlight, Qt::transparent);
comboBox->setPalette(p);

p = comboBox->view()->palette();
p.setColor(QPalette::Highlight, Qt::transparent);

comboBox->view()->setPalette(p);

Das problem ist, dass, was Farbe der QComboBox aktuell ist, was die Farbe der Markierung wird bei der Auswahl eines Elements im popup. Ich möchte jeden QComboBox Element bleiben die gleiche Farbe. Die Bilder zeigen das problem, das ich habe.

Qt so ändern Sie die Hervorhebungsfarbe eines bestimmten QComboBox Element

  • Ich verstehe nicht dein problem nicht ganz, kannst du sagen, welche Farbe die items "Keine änderung", "Aus" ein "Auf" sein sollte und was Sie jetzt sind (oder warum Ihre Bilder sind falsch)?
  • Sie sollte rot sein. Sollte grün sein, und Nicht ändern, sollten die Standard-Farbe. Das highlight-color auf transparent gesetzt. Dies funktioniert für die combobox, aber wenn Sie die Auswahl Elemente in der combobox "transparent" gibt mir nicht die Ergebnisse, die ich erhofft. Sie sehen in den Bildern, die das ausgewählte Element aus der QAbstractItemView ist immer rot.
InformationsquelleAutor Jared Price | 2014-01-29
Schreibe einen Kommentar