布局重定义父组件问题
将一个组件加入到一个布局中时,Qt会自动设置这个组件的父组件。这一点Qt官方文档中有详细的描述。
粗浅翻译如下,原文在此。
当你使用
layout
时,就不需要在创建子组件时指定父组件了。Qt的layout
会自动的为子组件重新定义父组件(使用QWidget::setParent()
)。父组件即为安装了layout
的组件。Note:
layout
中组件的父组件是安装了layout
的那个组件,而不是layout
。组件只能以组件作为父亲,而不能以layout
作为父亲。你可以使用
addLayout()
将一个layout
放入另一个。里面的layout
就会是外面layout
的孩子。
这实为一个小知识点,但是还是需要注意。因为这个重定义父组件也会使本不打算指定任何父组件的组件,拥有一个父组件。而如果不能及时了解这个知识点,那么在DEBUG时会较为麻烦。
总结:
- 使用
setLayout()
函数,会将布局中所有组件的父组件重设。 - 重设的父组件是安装布局的组件,而不是布局。
addLayout()
可以将布局作为孩子放到布局中。
如果帮助到您,还希望您点赞、评论、收藏。
如有更加简介明了的翻译,还请留言至评论区,我会修改并注明出处。
非常感谢。