「 QT 避坑指南 」远离那些躺过无数次的坑
整理 | 猿胖子
出品 | 猿武场(ID:apesarena)
关注公众号并回复数字「 1024 」加入猿武场社群
在开发布局过程中偶尔会采用setGeometry()的方式进行绝对布局摆放控件,但时常会遇到不生效的问题,是什么原因造成的的?
问题出在这里
当执行setGeometry() 时会对当前空间的WA_WState_Created属性进行判断,用来查看当前组件是否已经创建了Window,如果发现没有创建,那默认就会调用create()方法进行window 创建,这就导致了QT在创建window时自动校正当前window的gemoetry,之前设置的setGeometry() 就会被覆盖掉,无法生效!

解决方案
首先可以采用在setGeometry()之后调用一下setVisible(true)来解决。
既然第一次显示窗口时会默认触发一次create() ,那就想办法在先将窗体显示出来,在设置移动位置。
1...
2
3//先显示组件
4setVisible(true);
5setGeometry();
6
7...
愉快的撸码吧 !

文章转载自猿武场,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




