QComboBox Stil für ausgewählten Elements in der Dropdown-Liste
Möchte ich den Stil der highlightation des ausgewählten Elements in der Dropdownliste der combobox-Komponente.
Den Unterschied zu anderen Fragen ist, dass ich nicht wollen, um Stil "ausgewählte" item " (schweben mit der Maus) .. ABER ich interessiere mich für das styling der bereits ausgewählten Artikel.
Standard ist eine Art ticker, die gemalt wird über den text. Ich möchte dem ausgewählten Element um text Fett und kein ticker-Bild.
Oder im schlimmsten Fall nur shifth der text nach rechts, um den ticker sichtbar richtig.
Was ich habe ist dieses:
Beachten Sie die 17th Punkt, der ticker über die Nummer 17.
Dies ist mein stylesheet:
QComboBox
{
subcontrol-origin: padding;
subcontrol-position: top right;
selection-background-color: #111;
selection-color: yellow;
color: white;
background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #565656, stop: 0.1 #525252, stop: 0.5 #4e4e4e, stop: 0.9 #4a4a4a, stop: 1 #464646);
border-style: solid;
border: 1px solid #1e1e1e;
border-radius: 5;
padding: 1px 0px 1px 20px;
}
QComboBox:hover, QPushButton:hover
{
border: 1px solid yellow;
color: white;
}
QComboBox:editable {
background: red;
color: pink;
}
QComboBox:on
{
padding-top: 0px;
padding-left: 0px;
color: white;
background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #2d2d2d, stop: 0.1 #2b2b2b, stop: 0.5 #292929, stop: 0.9 #282828, stop: 1 #252525);
selection-background-color: #ffaa00;
}
QComboBox:!on
{
color: white;
background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #666, stop: 0.1 #555, stop: 0.5 #555, stop: 0.9 #444, stop: 1 #333);
}
QComboBox QAbstractItemView
{
border: 2px solid darkgray;
color: black;
selection-background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #111, stop: 1 #333);
}
QComboBox::drop-down
{
subcontrol-origin: padding;
subcontrol-position: top right;
width: 15px;
color: white;
border-left-width: 0px;
border-left-color: darkgray;
border-left-style: solid; /* just a single line */
border-top-right-radius: 3px; /* same radius as the QComboBox */
border-bottom-right-radius: 3px;
padding-left: 10px;
}
QComboBox::down-arrow, QSpinBox::down-arrow, QTimeEdit::down-arrow, QDateEdit::down-arrow
{
image: url(:/icons/down_arrow.png);
width: 7px;
height: 5px;
}
Ich versuche zu überschreiben das Element delagate:
ui->modeComboBox->setItemDelegate(new QStyledItemDelegate());
zusammen mit
QComboBox QAbstractItemView::item:selected style
Oder überschreiben Sie die Ansicht:
QListView * listView = new QListView(ui->modeComboBox);
listView->setStyleSheet("QListView::item { \
border-bottom: 5px solid white; margin:3px; } \
QListView::item:selected { \
border-bottom: 5px solid black; margin:3px; \
color: black; \
}");
ui->modeComboBox->setView(listView);
aber in beiden Fällen völlig deaktiviert das markieren von ausgewählten Element (der 17-item)
UPDATE 1
Getestet habe ich eingestellt ::Element:stylesheet überprüft, aber es hat nicht geholfen:
QListView * listView = new QListView(ui->modeComboBox);
listView->setStyleSheet("QListView::item { \
border-bottom: 5px solid white; margin:3px; } \
QListView::item:selected { \
border-bottom: 5px solid black; margin:3px; \
color: black; } \
QListView::item:checked { \
background-color: green; \
color: green;}"
);
ui->modeComboBox->setView(listView);
Auch ich habe dies nur Hinzugefügt, um die stylesheet-nur um sicher zu sein:
QComboBox QListView::item:checked {
background-color: green;
}
Das Ergebnis mit 17 Modus aktiviert war (das schwarz nur Mauszeiger):
UPDATE 2
Ok, ich war in der Lage zu ändern, das Gewicht der Schrift geprüft item, aber ich nicht entfernen, der blöde ticker von der Sache.. ich experimentierte mit meiner stylesheet-Datei, und ich fand heraus, dass diese beiden Selektoren sind verantwortlich für den Stil der ausgewählten Elemente highlightation:
QWidget:item:selected
{
border: 0px solid #999900;
background: transparent;
}
QWidget:item:checked
{
font-weight: bold;
}
Wenn ich entfernen Sie die ::item:aktiviert, dann ::item:aktiviert die nicht funktionieren (tut es nicht bolderise die geprüfte Position) und der ticker dissappears.
Auf Qt forum die Sie geraten, dass ich irgendwie verkürzt, der "Platz für icons der combobox".. kann ich nicht finden-der selector ist für das verantwortlich..
Habe ich das Gefühl, dass das Stylesheet ist schwarze Magie, und nur die choosen können verstehen, was im Innern passiert..
QComboBox QListView::item:checked { background-color: green; }
?Ich habe versucht, es hat nicht geklappt, aktualisiert die Frage.. danke
dein Vorschlag hat mir geholfen, aber ich habe es auf QWidget.. aber noch war ich nicht in der Lage, entfernen Sie den ticker..
InformationsquelleAutor nayana | 2015-04-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, nach viel Kampf habe ich einige Abhilfe.. es ist nicht die beste, ist es nicht das richtige, aber es sieht ok..
Habe ich den bold-Effekt in dieser Art und Weise (es Auswirkungen auf andere widgets wie überprüfbar Menüpunkte, aber kann ich mit Leben):
Dann, wenn ich das hinzufügen von Elementen bin ich voranstellen von Leerzeichen in Ihrem text in der Reihenfolge zu verschieben, um die richtige.. ich habe versucht, so viele Dinge, aber nichts beeinflusst die QAbstractItemView innen.
Dies ist das Ergebnis:
InformationsquelleAutor nayana
Hatte ich Erfolg mit weniger spezifischen stylesheet-Selektoren und "padding-left":
(wahrscheinlich einige unnötige Doppelarbeit in, dass, auch!)
Das problem behoben, aber es erstellt ein neues (Qt 5.9.2). Die Höhe der einzelnen Elemente nehmen Sie die Hälfte der Höhe des Bildschirms. Ich muss hinzufügen, eine max-Höhe...
InformationsquelleAutor Rudolf Cardinal
Ich weiß, es ist wirklich spät, aber für Leute mit dem gleichen problem:
Ich fand diese auf eine andere Frage hier: Nicht in der Lage, zu verbergen, Wahl-Anzeige der QComboBox
Diese ausblenden soll das Kennzeichen/Häkchen:
InformationsquelleAutor Miklemyers
Dieser arbeitete für mich!:
InformationsquelleAutor osvaldo