Поля виджета против полей макета - PullRequest
0 голосов
/ 04 июля 2019

SetContentsMargin существует как в QWidget, так и в макете.Таким образом, добавляются 2 поля или оба работают на одну и ту же маржу.Возьмите пример, где макет установлен для виджета, а поля установлены как для виджета, так и для макета. Есть ли стандартный подход в Qt?И следует ли этому весь встроенный макет Qt?Какая оригинальная идея стоит за всем этим?

1 Ответ

0 голосов
/ 05 июля 2019

На виджете поля - это область внутри виджета.

Так что если у вас есть виджет размером 100 x 50 и поля (5,6,5,6), то вы будетеиметь contentsRect() из QRect(5,6 90x38).

Виджет может рисовать свои поля, и, насколько это касается QLayout, эти поля считаются как в виджете.Эти поля используются для информирования других виджетов и подклассов о том, где находится «ядро» виджета.Это может быть полезно, чтобы сообщить подклассам, где им разрешено рисовать.

Поля для макетов одинаковы.Они представляют область в макете.Если у вас есть макет с левым полем 10 пикселей, первый виджет будет отображаться на расстоянии 10 пикселей от границы макета.Если этот виджет имеет левое поле 5 пикселей, то значимое содержимое виджета будет начинаться на расстоянии 15 пикселей от границы макета.Однако, как я уже говорил, часть от 10 px до 15 px находится внутри виджета, и виджет может рисовать в этом пространстве.

В макетах у вас также есть spacing, а для полей это добавляетдо полей виджетов.

enter image description here

Дополнительная информация

Если вы разместите макет внутри виджета, макет будет занимать толькопрямоугольник содержимого (contentsRect()).Тогда макет будет иметь свое поле, подсчитанное внутри макета.

В заключение, общее видимое поле - это поле родительского виджета + поле макета + поле дочернего виджета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...