Установка радиуса границы для QSpinBox/QComboBox имеет неожиданный побочный эффект для элементов управления вверх/вниз

Я использую PyQt4 для создания интерфейса с несколькими входами QLineEdit и QSpinBox. Я хочу придать обоим приятный округлый вид, но это создает проблему в случае со спинбоксами.

Соответствующие биты таблицы стилей выглядят так:

QDialog {
    background-color: #444;
}

QLabel, QLineEdit, {
    background-color: #eee;
    border-radius: 8px;
}

QSpinBox{
    background-color: #eee;
}

Предоставление интерфейса, похожего на это:

Скриншот пользовательского интерфейса

Теперь, когда я включаю border-radius (даже со значением 0) для QSpinBox и QComboBox, я получаю это

Глючный скриншот пользовательского интерфейса

Обратите внимание, как стрелки изменились с темы Windows XP/vista на обычный вид по умолчанию.

Почему это происходит и как я могу предотвратить это?

Что я хотел бы видеть, так это то, что основные формы счетчика и поля со списком имеют форму редактирования строки. Я не пробовал устанавливать пользовательские изображения стрелок, так как предпочел бы использовать собственные значения по умолчанию. Или это действительно мой лучший/единственный вариант? Спасибо!


person Junuxx    schedule 22.05.2012    source источник
comment
JNK будет ОЧЕНЬ зол на вас   -  person Alex Gordon    schedule 26.10.2012
comment
этот парень stackoverflow.com/users/397952/jnk   -  person Alex Gordon    schedule 26.10.2012
comment
А, точно :D Ну, я думаю, у Артура Кларка было бы больше причин злиться на нас обоих.   -  person Junuxx    schedule 26.10.2012
comment
тебе лучше быстро сменить его, пока он не узнал!   -  person Alex Gordon    schedule 26.10.2012


Ответы (2)


Пройдите через этот QStyle, где у вас появится идея изменить стиль ваш виджет в QWindowsStyle, QMacStyle или QMotifStyle. А также, если вы установите таблицу стилей для определенного виджета, будут обновлены только значения set вами, остальные свойства inherited из его parent виджета. поэтому попробуйте также указать widget style, как я сказал выше, при настройке stylesheet.

person ScarCode    schedule 22.05.2012
comment
Спасибо за ответ и ссылки. На данный момент я решил сделать свои собственные изображения в любом случае, но это может помочь в будущем. - person Junuxx; 22.05.2012

Когда вы меняете таблицу стилей виджета, он становится стилем QCssStyle. Он возвращает каждый не стилизованный подэлемент управления к стилю по умолчанию. Вы должны стилизовать весь элемент управления, чтобы получить желаемый вид. Это не будет смешиваться

person Kamil Klimek    schedule 22.05.2012
comment
Спасибо. Но почему тогда background-color не вернул кнопки по умолчанию? - person Junuxx; 22.05.2012
comment
Потому что цвет фона не меняет форму - person Kamil Klimek; 22.05.2012