Изменение цвета невыбранных элементов QComboBox в Qt - PullRequest
0 голосов
/ 08 марта 2020

Я скопировал код из многочисленных источников, и таблица стилей для моего QComboBox выглядит так:

QComboBox {
    border: 1px solid gray;
    border-radius: 3px;
    padding: 1px 18px 1px 3px;
    min-width: 6em;
}

QComboBox QListView::item {
    background:green;
}

QComboBox:!editable, QComboBox::drop-down:!editable {
     background: red;
}

/* QComboBox gets the "on" state when the popup is open */
QComboBox:!editable:on, QComboBox::drop-down:editable:on {
    background: blue;
}

QComboBox:on { /* shift the text when the popup opens */
    padding-top: 3px;
    padding-left: 4px;
}

QComboBox::drop-down {
    subcontrol-origin: padding;
    subcontrol-position: top right;
    width: 15px;

    border-left-width: 1px;
    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;
}

QComboBox::down-arrow {
    image: url(/usr/share/icons/crystalsvg/16x16/actions/1downarrow.png);
}

QComboBox::down-arrow:on { /* shift the arrow when popup is open */
    top: 1px;
    left: 1px;
}


QComboBoc QListView {
    show-decoration-selected: 1; /* make the selection span the entire width of the view */
}

QComboBoc QListView::item:alternate {
    background: #EEEEEE;
}

QComboBoc QListView::item:selected {
    border: 1px solid #6a6ea9;
}

QComboBoc QListView::item:selected:!active {
    background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
                                stop: 0 #ABAFE5, stop: 1 #8588B2);
}

QComboBoc QListView::item:selected:active {
    background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
                                stop: 0 #6a6ea9, stop: 1 #888dd9);
}

QComboBoc QListView::item:hover {
    background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
                                stop: 0 #FAFBFE, stop: 1 #DCDEF1);
}


  QComboBox QAbstractItemView {
      border: 2px solid orange;
      selection-background-color: green;
  }

QComboBox::item:!enabled {
    color:green;
}


QListView::item:selected {
    background: orange;
}

К этому моменту я ожидал, что хотя бы один из них сработает.

Вот как это выглядит сейчас:

Перед нажатием кнопки выпадающего списка:

enter image description here

После нажатия раскрывающегося списка кнопка:

enter image description here

С невыбранными предметами практически ничего не сделано. Опять же, я просто смешал их, так как предполагал, что хотя бы один из них сработает, но ничего не вышло. Если я правильно помню, таблица стилей отдает приоритет стилю, который придет позже, поэтому, если бы кто-то из них работал, я думаю, этот огромный кусок кода изменил бы его.

Ради понимания, я хочу изменить белый фон на видимый цвет, отличный от синего или красного (так как они уже используются). Подойдет что-то вроде зеленого, желтого или оранжевого.

Просто нужно выяснить, как это изменить.

Есть идеи?

...