Qt孩子是可见的,但父母没有

时间:2015-03-12 22:02:23

标签: qt parent-child visibility

我有一些小部件,QToolButtons完全正确,我将它们初始化为:

QFrame *frmBackground = new QFrame(ui->centralWidget);
QToolButton *btnMenueExit = new QToolButton(frmBackground);

但现在我的问题。当我打电话给frmBackground->setVisible(false)时,孩子也应该消失,但事实并非如此。孩子们仍然可见,我必须为每个孩子打电话setVisible(false)。我不能做到这一点,但我认为我错过了关于父母和孩子概念的重要信息。

所有小部件都组织在同一个QGridLayout

我担心的是,如果我在设计器中创建了子< - >父关系,将子项放入父窗口小部件,当我调用parent->setVisible(false)时,孩子就会消失;

我是否需要设置一些其他参数来将这些属性传递给子元素,如属性绑定?

1 个答案:

答案 0 :(得分:0)

当您使用QLayout添加小部件时,

addWidget()将获得小部件的所有权。在widget构造函数中使用parent参数是没有必要的。

将一个小部件设置为另一个小部件的直接父级不是一个好习惯,您应该始终使用布局。

  

如果您想使用QWidget来保存子窗口小部件,您通常需要将布局添加到父QWidget。

setVisible()传播给所有孩子。如果它不适用于子窗口小部件,那么窗口小部件就不再是它们的父窗口了。