QWidget имеет встроенную поддержку макетов с помощью функций layout()
и setLayout(...)
. Объект макета управляет позиционированием различных дочерних виджетов, которые могут быть добавлены в макет. Кроме того, он обеспечивает правильный размер родительского виджета в соответствии с указанными ограничениями . Если в макете еще нет родительского виджета, то, как только макет будет присоединен к виджету с помощью setLayout()
, он установит размер этого родительского виджета.
Но некоторые виджеты больше похожи на менеджер макетов, чем виджеты, такие как QSplitter и QTabWidget . Рассмотрим, например, QSplitter. Хотя один виджет, он представляет две разные области, с которыми можно работать. В этом случае один менеджер макета для двух разных областей не имеет смысла. Как и QSplitter, QTabWidget имеет некоторые поведения, которые делают единый макет не только ненужным, но и бесполезным.
Я думаю, что вышеприведенное сочетание макета и виджета делает разделение макета и виджета иногда запутывающим.