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。
我有一些小部件,准确地说是 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,例如 属性 绑定?
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。