我有一些小部件,QToolButtons
完全正确,我将它们初始化为:
QFrame *frmBackground = new QFrame(ui->centralWidget);
QToolButton *btnMenueExit = new QToolButton(frmBackground);
但现在我的问题。当我打电话给frmBackground->setVisible(false)
时,孩子也应该消失,但事实并非如此。孩子们仍然可见,我必须为每个孩子打电话setVisible(false)
。我不能做到这一点,但我认为我错过了关于父母和孩子概念的重要信息。
所有小部件都组织在同一个QGridLayout
。
我担心的是,如果我在设计器中创建了子< - >父关系,将子项放入父窗口小部件,当我调用parent->setVisible(false)
时,孩子就会消失;
我是否需要设置一些其他参数来将这些属性传递给子元素,如属性绑定?
答案 0 :(得分:0)
QLayout
添加小部件时, addWidget()
将获得小部件的所有权。在widget构造函数中使用parent
参数是没有必要的。
将一个小部件设置为另一个小部件的直接父级不是一个好习惯,您应该始终使用布局。
如果您想使用QWidget来保存子窗口小部件,您通常需要将布局添加到父QWidget。
setVisible()
传播给所有孩子。如果它不适用于子窗口小部件,那么窗口小部件就不再是它们的父窗口了。