qt中瞬态父级和父级的区别

ani*_*iki 5 qt qt5

我对 qt 中的父级和瞬态父级感到困惑。

  1. 对于同一个窗口是否可以同时拥有瞬态和父窗口?
  2. 对于顶级窗口(像 Popup 这样的小部件),瞬态父级被设置并且父级设置为 NULL ?

您能否分享一下关于qt中的父级和瞬态父级的清晰想法。

Rei*_*ica 5

对于同一个窗口是否可以同时拥有瞬态窗口和父窗口?

是的,但这是一个特殊情况。回想一下, a QWindow(以及QWidget) is-a QObject。因此,您可能希望为它提供一个父级,以实现内存管理或抽象所有权的目的,但不是为了窗口管理的目的。

因此,QWindow(和QWidget)可以有一个父窗口,并且通过设置窗口标志也可以成为顶级窗口Qt::Window。否则,所有无父窗口和小部件都默认设置该标志 - 并且无法清除。

如果这样的窗口也是瞬态窗口(例如弹出窗口),则它可以具有与正常父窗口不同的瞬态父窗口。

对于顶级窗口(像 Popup 这样的小部件),瞬态父窗口被设置,父窗口设置为nullptr?

一般来说是的,但请参见上面 - 您parent可以出于内存管理或窗口/小部件集合管理的原因设置它们,只要您在它们上设置Qt::Window窗口标志即可。