Qt childs 可见但 parent 不可见

Qt childs are visible but parent not

我有一些小部件,准确地说是 QToolButtons,我这样初始化它们:

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

但现在我的问题。当我调用 frmBackground->setVisible(false) 时,child 也应该消失,但事实并非如此。 children 仍然可见,我必须为每个 child 调用 setVisible(false)。这不是我做不到,但我想我错过了关于 parent 和 child.

概念的一些重要内容

所有小部件都组织在相同的 QGridLayout 中。

我担心的是,如果我在设计器中建立 child<-->parent 关系,将 child 放入 parent 小部件, 当我调用 parent->setVisible(false);

时 child 消失了

我是否必须设置一些其他参数才能将这些属性传递给 child,例如 属性 绑定?

QLayout 获取小部件的所有权,当您使用 addWidget() 添加一个小部件时。不需要在小部件构造函数中使用 parent 参数。

将一个小部件设置为直接 parent 另一个小部件不是一个好的做法,您应该始终使用布局。

If you want to use a QWidget to hold child widgets you will usually want to add a layout to the parent QWidget.

setVisible() 传播给所有 children。如果它不适用于 child 小部件,则该小部件不再是他们的 parent。