Je veux styliser la surbrillance de l'élément choisi dans la liste déroulante de la zone de liste déroulante. La différence par rapport aux autres questions est que je ne veux pas styliser l'élément "sélectionné" (plané avec la souris). MAIS Je suis intéressé par le style de l'élément déjà choisi.Style QComboBox pour l'élément choisi dans la liste déroulante
La valeur par défaut est une sorte de ticker qui est peint sur le texte. Je veux que l'élément choisi ait du texte en gras et aucune image de ticker.
Ou dans le pire des cas, juste shifth le texte à droite pour rendre le symbole visible correctement.
Ce que j'est ceci:
avis le 17 élément qui a ticker sur le nombre 17.
Ceci est mon 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;
}
Je tentais pour remplacer l'élément delagate:
ui->modeComboBox->setItemDelegate(new QStyledItemDelegate());
avec
QComboBox QAbstractItemView::item:selected style
Ou passer outre la vue:
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);
mais dans les deux cas, cela désactive totalement le point culminant de l'article choosed (qui est 17 article)
MISE À JOUR 1
J'ai testé à set :: item: checked stylesheet mais il n'a pas aidé:
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);
Aussi je a ajouté à la feuille de style juste pour être sûr:
QComboBox QListView::item:checked {
background-color: green;
}
Le résultat avec le mode 17 vérifié était (le noir est tout simplement vol stationnaire de la souris):
MISE À JOUR 2
Ok, je pouvais ch ANGE le poids de la police de l'élément vérifié, mais je ne peux pas enlever le symbole stupide de l'élément .. J'ai expérimenté avec mon fichier stylesheet et j'ai découvert que ces deux sélecteurs sont responsables pour le style des éléments cochés highlightation:
QWidget:item:selected
{
border: 0px solid #999900;
background: transparent;
}
QWidget:item:checked
{
font-weight: bold;
}
Si je supprime le :: item: sélectionné, alors :: item: checked ne fonctionne pas (il ne sépare pas l'item coché) et le ticker disparaît.
Sur le forum de Qt ils ont conseillé que je raccourcis en quelque sorte "l'espace pour des icônes de combobox" .. Je ne peux pas trouver le sélecteur qui est responsable de cela ..
J'ai le sentiment que la feuille de style est la magie noire et seul le choosed peut comprendre ce qui se passe à l'intérieur ..
jamais testé mais ont vous avez essayé: 'QComboBox QListView :: item: checked {background-color: green; } '? – Iuliu
@iuliu je l'ai essayé n'a pas travaillé, mis à jour la question .. merci – nayana
@Iuliu votre suggestion m'a aidé, mais je l'ai mis sur QWidget .. mais encore je ne pouvais pas retirer le téléscripteur .. – nayana