Qt, Wie ändere ich die Textfarbe eines Elements einer QComboBox? (C++)
Ich kann nicht herausfinden, wie man den text ändern der Farbe von einem bestimmten Gegenstand von einer QComboBox. Ich war in der Lage, ändern Sie die Hintergrundfarbe für ein Element:
comboBox->setItemData(i, Qt::green, Qt::BackgroundRole);
(Qt::ForegroundRole
hatte überhaupt keine Wirkung, Qt 4.6, Ubuntu 10.04)
und ich war in der Lage, ändern Sie die Farbe des Textes aller Elemente mit einem stylesheet, aber ich kann nicht herausfinden, wie man den text ändern der Farbe eines angegebenen Elements ab.
Vielen Dank für Ihre Hilfe!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist fast so, wie Sie vorschlagen, aber Sie müssen ändern Sie die Funktion
Qt::TextColorRole
.ForegroundRole
aber nichts für mich. Vielleicht ist dies der Grund für Jérôme AntwortIch habe nie versucht, es zu tun, aber ich denke, der einzige Weg, es zu tun wäre, um zu schreiben Ihre eigenen Modell, Erben
QAbstractListModel
, reimplementingrowCount()
unddata()
hier stellen Sie die Farbe für jedes Element (mit derTextColorRole
Rolle).Verwenden Sie dann
QComboBox::setModel()
um dieQComboBox
anzuzeigen.UPDATE
War ich in der Lage, das zu tun, was Sie wollen mit der obigen Lösung. Hier ist ein einfaches Beispiel.
Ich meine eigene Liste Modell, Erben
QAbstractListModel
:Ist es jetzt einfach, dieses Modell zu nutzen, mit der combo-box :
Ich habe es ausprobiert und es funktioniert Prima.
Glaube nicht, dass dies die Lösung, aber, wenn es handlich ist, in einigen Fällen könnten Sie QPixmap-s für Ihre combo-box. Werfen Sie einen Blick auf QComboBox::insertItem Methoden.