解决QScrollArea不能出现滚动条的问题

QScrollArea实在是一个非常强大的控件,节省了很多重复工作。

但如果使用Qt Creator中的ui designer来制作界面的话,就会出现滚动条无法出现的问题。而在《C++ GUI Programming with Qt4, Second Edition》中由于是代码生成界面,没有此问题。有不少人碰到这个问题,就因此觉得“designer中生成是错的,代码生成是正确的”的这种想法,试问奇趣公司的天才能设计出Qt这种最伟大的框架,却连设计器都没好好测试就放出release了?开玩笑吧。

网上甚至还有个网友很“技术”地分析了这个问题,写了整整2大篇分析文章(点击打开),图文并茂而且还用了控件的提升改进等方法,还说是布局的QSizePolicy的问题。

谁能想到真正的问题和解决方法如此简单,用ui designer拖入的QScrollArea的widgetResizable属性是true,而用代码生成控件时默认构造器指定这个值是false。

真正的解决方法是在designer中将此值改为false,或在运行过程中执行setWidgetResizable(false)。