Не удалось скрыть Choice-Indicator от QComboBox

Программист

Когда я устанавливаю цвет фона представления списка, принадлежащего QComboBox (для QSS), тогда этот QComboBox больше не будет использовать встроенный opticel-look-and feel. Instaed Я должен указать все оптические настройки также в соответствии с таблицей стилей QSS:

QComboBox QListView {
    background-color:white;
    border:1px solid black;
}

Представление списка, в котором отображается выбираемый элемент, теперь отображает флажок слева. Этот флажок установлен для тех элементов, которые были выбраны при последнем использовании.

Как я могу скрыть столбец с флажками, чтобы они были невидимыми и не занимали место на экране?

Заранее спасибо...

1 ответ

QSS Временное решение для сложной темы прорисовки QComboBox

Если вы не используете блок QSS, QComboBox рисуется с его OS-Look-and-Feel. Если вы начинаете задавать правила QSS, некоторые или все элементы управления QComboBox начинают терять OS-Look-and-Feel. В худшем случае вы должны указать все свойства в QSS сейчас.

Предметом этой статьи является индикатор выбора, нарисованный классом QStyleViewItem, помощником рендеринга, реализованным в.../src/gui/widgets/qcombobox_p.h в источниках QT. Эта функциональность кажется невозможной изменяемой подклассом QProxyStyle, который может использоваться в других случаях для сложных задач макета.

Тем не менее, я нашел решение в QSS, указав хорошо выбранный набор правил:

/* Background color of popup-list.*/ 
QComboBox QListView{
    background-color:white;
    border:1px solid gray;
}
/* Needed to complete the rule set. */
QComboBox::item:alternate {
    background: white;
}
/* Color of the selected list item. */
QComboBox::item:selected {
    border: 1px solid transparent;
    background:yellow;
}
/* Indicator will shine through the label text if you don't make it hidden. */
QComboBox::indicator{
    background-color:transparent;
    selection-background-color:transparent;
    color:transparent;
    selection-color:transparent;
}
Другие вопросы по тегам