我写pyqt已经有1年多了, 但是一直以来都没有整理清楚qt如何分配控件大小的. 最近又重新看了下文档, 稍微理清了点头绪, 这里整理一下.
我们知道, qt提供了很方便的layout机制, 方便我们不需要自己制定控件的大小, 以及非常好用的qt designer, 在大多数的时候, 我们只需要用qt designer拖拖拉拉界面, 或者写代码, 直接用QLayout.addWidget一个个加子控件就好了.
但是有的时候, 我们还是需要处理一些特殊情况, 比如自定义控件, 比如做一些微调. 这个时候我们需要整理清楚逻辑.
我们应该以这样的方式来一步步制定逻辑:
问题分割成:
- 微观(控件)层面: 一个控件定义清楚自己大小的逻辑, 比如QLineEdit在垂直方向上的大小是固定的.
- 宏观层面: layout自动整理清楚控件, 然后做一些微调, 比如如何把空间分别分配给各个控件.
- 我们
- 设置sizeHint, 以及sizePolicy
在layout层面, 设置stretch