暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Qt setGeometry 不生效?

猿武场 2022-12-27
1464

「 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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论