Цвет текста QComboBox не изменится с таблицей стилей

Я пытаюсь создать поле со списком в QT5. Я использую QT Creator для макета и загружаю таблицу стилей для всего приложения при запуске.

CSS, который я связал с моим полем со списком, выглядит следующим образом:

QComboBox
{
    color:white;
    background-color: qlineargradient(x1:0, y1:0, x2:1,y2:1, stop: 1 rgba(228, 41, 81, 100), stop: 0 rgba(234, 107, 101, 100));
    border-color: rgba(255,255,255,200);
    border-width: 1px;
    border-style: solid;
}

QComboBox QListView
{
    border-style: none;
    background-color: qlineargradient(x1:0, y1:0, x2:1,y2:0, stop: 1 rgba(228, 41, 81, 100), stop: 0 rgba(234, 107, 101, 100));
}

QComboBox::drop-down
{
    width: 20px;
    border: 1px;
    border-color:white;
    border-left-style:solid;
    border-top-style: none;
    border-bottom-style: none;
    border-right-style: none;
}

QComboBox::down-arrow
{
    image: url(:/ArrowImages/images/whitearrowdown16.png);
    width: 16px;
    height: 16px;
}

Но цвет текста в поле со списком остается цветом по умолчанию (черным). Цвет в раскрывающемся списке — белый. Цвет границы и стиль работают правильно. Является ли метка в поле со списком своего рода вспомогательным элементом управления, который мне нужно стилизовать отдельно? Или я что-то еще упускаю?

Спасибо.

Редактировать:

Добавил скриншоты для ясности

Стиль поля со списком

Стиль раскрывающегося списка

Редактировать 2: похоже, это происходит только тогда, когда для поля со списком установлено значение, недоступное для редактирования (что является правильным поведением для моей программы, поэтому мне это не очень помогает). Когда для поля со списком установлено значение для редактирования, оно правильно подчиняется стилям. я пытался добавить

QCombobox:!editable
{
    color:white;
}

но это не решает проблему.


person Sam    schedule 27.06.2014    source источник
comment
Если вы загружаете таблицы стилей из файла, возможно, у вас есть другая таблица стилей, загруженная впоследствии в ваше приложение, которая перезаписывает этот конкретный стиль? Вы можете попробовать использовать QComboBox#YOUR_SPECIFIC_COMBO_BOX_NAME { color: white; }   -  person TWE    schedule 27.06.2014


Ответы (3)


Только что решил это. Кажется, что установка свойства padding (с любым значением) в поле со списком в таблице стилей заставляет его правильно подчиняться стилю цвета. Я предполагаю, что это связано с какой-то ошибкой, которая может возникнуть только при определенных настройках, но если у кого-то еще возникла такая же проблема, будет работать следующий код (по сравнению с исходным вопросом):

QComboBox
{
    color:white;
    background-color: qlineargradient(x1:0, y1:0, x2:1,y2:1, stop: 1 rgba(228, 41, 81, 100), stop: 0 rgba(234, 107, 101, 100));
    border-color: rgba(255,255,255,200);
    border-width: 1px;
    border-style: solid;
    padding: 1px 0px 1px 3px; /*This makes text colour work*/
}
person Sam    schedule 18.07.2014
comment
Эта проблема не давала мне покоя последние два часа... ПРОКЛАДКА? Вау, я благодарю вас за решение этого! Но мне интересно, почему? Какая ошибка может вызвать это? - person SilverWolfe; 08.08.2014
comment
удивительно. отличная работа, чтобы понять это. У меня такая же проблема. - person Rachael; 09.09.2014
comment
Я знаю, что SO препятствует бессмысленным комментариям, но... СПАСИБО! margin: 0px тоже работает. - person Green Cell; 14.01.2019

Представление "внутри" - это QListView.

QListView
{
  color: white;
}

должен сделать трюк.

person OnWhenReady    schedule 27.06.2014
comment
Извините, это само поле со списком, а не раскрывающийся список, которое не принимает изменение цвета. Выпадающий список правильно оформлен (хотя и использует цвет из раздела QComboBox, а не свой собственный. Однако в моем случае это не проблема.) - person Sam; 27.06.2014
comment
Вы имеете в виду текущий элемент? Для текущего элемента ваш код (первая часть) отлично подходит (QComboBox{ color: white; }). Вы пытались удалить весь код таблицы стилей, кроме цветового тега? - person OnWhenReady; 27.06.2014
comment
Я добавил несколько скриншотов к исходному вопросу для ясности. Я попытался создать полностью пустую таблицу стилей, используя только таблицу стилей со списком с цветом, и она по-прежнему влияет только на раскрывающийся список. - person Sam; 27.06.2014

Использование отступов в качестве обходного пути может привести к некоторым другим проблемам. Возможно, установка selection-color должна решить эту проблему.

QComboBox
{
   selection-color: white;
}
person cezs    schedule 20.11.2018