Qt中直接调用setFixedSize与QLabel调用该方法的区别及显示问题
Qt中窗口与QLabel调用setFixedSize的区别及显示问题解析
两个setFixedSize调用的核心区别
- 直接调用
setFixedSize(64,96):作用于当前代码所属的窗口部件(比如这段代码所在的类是继承QWidget/QMainWindow的窗口类),把整个窗口的尺寸锁死为64×96,窗口无法被拉伸或缩小。 - 调用
card_front->setFixedSize(64,96):只作用于QLabel控件card_front,仅把这个标签的尺寸固定为64×96,不影响窗口本身的大小。
为什么移除窗口的setFixedSize后QLabel不显示
Qt窗口默认的大小规则是:如果没手动设置大小,也没添加布局管理器,窗口会收缩到最小尺寸(可能是0×0或者极小的尺寸)。这时候QLabel虽然自己设了64×96的大小,但它是窗口的子控件,窗口本身太小,QLabel完全被窗口的边界遮挡住,自然看不到。
而给窗口设置setFixedSize(64,96)后,窗口大小和QLabel刚好匹配,QLabel就能完整显示在窗口里。
替代解决方案
如果不想给窗口设固定大小,也能让QLabel正常显示:给窗口添加一个布局管理器(比如QVBoxLayout),把card_front添加到布局中。这样窗口会自动根据子控件的尺寸调整自身大小,QLabel也会正常显示出来。
内容的提问来源于stack exchange,提问作者MathStudentEUW
相关产品推荐
相关产品推荐

