Как настроить QCalendarWidget?

Я пытаюсь применить некоторые таблицы стилей к своему QCalendarWidget и уже внес некоторые изменения. Вот мой код на данный момент:

QCalendarWidget QWidget{
background-color:magenta;
color: green;

}

QCalendarWidget QToolButton{
background-color:black;
color: green;
icon-size: 30px;
}

QCalendarWidget QMenu{
background-color:magenta;
color: green;

}

QCalendarWidget QAbstractItemView:enabled{
background-color: yellow;
color: black;
}

QCalendarWidget QAbstractItemView:disabled{
background-color: yellow;
color: white;
}

QCalendarWidget QMenu{
    background-color: rgb(255, 46, 221);
}

QCalendarWidget QSpinBox{
    background-color: black;
}

И результат таков:

изображение 1

Проблема в том, что я не могу найти, как настроить зеленые стрелки, номер недели и дни недели. Какие-либо предложения?


person Piontk    schedule 16.07.2019    source источник
comment
Объясните лучше, что вы хотите изменить из зеленых стрелок? Что вы хотите изменить в номере недели и днях недели?   -  person eyllanesc    schedule 16.07.2019
comment
Я хочу изменить значок и фон зеленой стрелки, а также фон, размер и стиль шрифта по номеру недели и дням недели.   -  person Piontk    schedule 16.07.2019


Ответы (1)


Это работает только для кнопок месяца, немного хакерское, и имейте в виду, что оно основано на жестко запрограммированных частных методах. Он использует имя объекта для получения определенного QToolButton ("qt_calendar_prevmonth" и "qt_calendar_nextmonth"), а также устанавливает значок. Не используйте image: url, так как он не будет работать для QToolButtons.

Теоретически вы также можете найти имена их объектов, просмотрев макет заголовка и проверив первый и последний QToolButtons, что может быть немного «сложнее», но, вероятно, безопаснее, и после этого вы установите таблицу стилей соответственно.

#qt_calendar_prevmonth {
    background-color: blue;
    icon-size: 30px;
    qproperty-icon: url(prevmonth.svg);
}
#qt_calendar_nextmonth {
    background-color: orange;
    icon-size: 30px;
    qproperty-icon: url(nextmonth.svg);
}

К сожалению, из-за того, как работает QCalendarWidget, нет способа изменить формат «заголовков» через таблицу стилей, поэтому вам нужно будет придерживаться QCalendarWidget headerTextFormat(), dateTextFormat() и так далее.

fmt = cal.headerTextFormat()
fmt.setForeground(QtGui.QColor('green'))
fmt.setBackground(QtGui.QColor('orange'))
cal.setHeaderTextFormat(fmt)
person musicamante    schedule 17.07.2019