Описываю в CSS стили виджетов, при этом меняю их отступы, внешние и внутренние (margin/padding) и предполагаю, что при обновлении стиля виджет перепозиционируется в лайауте, соотвественно margin'ам и внутри него перепозиционируются дети согласно padding'ам. Ан нет! Лайаут как был так и не изменился, хотя маржины и виджета изменились и он выглядит меньше. С паддингами еще хуже - вообще никакого видимого изменения не произошло.
Читаю документацию, нахожу, что:
Sub-controls are always positioned with respect to another element - a reference element. This reference element could be the widget or another Sub-control. For example, the ::drop-down of a QComboBox is placed, by default, in the top right corner of the Padding rectangle of the QComboBox. The ::drop-down is placed, by default, in the Center of the Contents rectangle of the ::drop-down Sub-control. See the List of Stylable Widgets below for the Sub-controls to use to style a widget and their default positions.
C++ (Qt)
QComboBox {
margin-right: 20px;
}
QComboBox::drop-down {
subcontrol-origin: margin;
}
Вкратце и насколько я понял, для верного позиционирования детей надо указать ориджин, потому, что по умолчанию дети позиционируются относительно чего-то фиксированного (может быть маржина). Добавляю всем потомкам указанный "сабконтрол-ориджин" переводящий начало на паддинг - результата 0.
Можно ли вообще и если да, то как использовать паддинги и маржины через CSS, в случае, когда виджеты лежат в лайауте?