主要问题
如何给小部件设置默认大小,并确保它们在需要时扩展、收缩或保持固定大小,而不影响布局?
我对Qt的理解
阅读了Qt文档后,似乎Qt的大小算法大致如下:布局从QWidget::sizeHint方法中获取其子项的理想大小。如果布局有额外的空间或者没有足够的空间,则会根据每个小部件的大小策略(QWidget::sizePolicy)、最小大小(QWidget::minimumSize)和最大大小(QWidget::maximumSize)确定调整哪些小部件的大小。
为什么没有QWidget::setSizeHint方法?
如果我的理解接近正确,那么你只需要在每个小部件上设置sizeHint、sizePolicy、maximumSize和minimumSize,一切都会正常工作。那么为什么没有setSizeHint方法?!?!?当然,每次你使用提供所有所需功能的小部件(QTableView, QComboBox等)时,你都可以扩展它并覆盖一个单独的方法,但这听起来绝对是荒谬的。
我正在处理的一个大小问题
我有一个带有QDockWidget的QMainWindow,在左侧。QDockWidget中有一个QTableView。我希望在启动时,QDockWidget/QTableView占用"合理"的空间,以便用户可以将其调整为任意大小。
不幸的是,当应用程序启动时,QDockWidget/QTableView占用的空间非常小,导致需要水平滚动条。我唯一发现的强制它给出一个合理宽度的方法是设置QDockWidget的最小宽度,但这会阻止用户将其缩小到他们想要的大小。