在PyQt中为对象编写父对象会导致该对象由Qt而不是PyQt拥有。有什么后果?

时间:2014-08-10 17:22:57

标签: qt pyqt parent-child

QObject.__init__(self, Parent=None)文档中声明:

父参数(如果不是None)会导致self被Qt而不是PyQt拥有。

由Qt而不是PyQt拥有是什么意思?这对开发PyQt应用程序时应该注意的行为有影响吗?

1 个答案:

答案 0 :(得分:2)

是的,确实如此。在PyQt应用程序中创建任何对象之前,它具有效果。如果我们设置父QWidget None,我可以告诉这个QWidget是顶级窗口。我会尝试解释;

“父窗口小部件等同于窗口框架”

Picture 1: Frame of user interface QMainWindow的父Widget是none。然后,由Qt而不是PyQt(或简单的词 root )拥有。 QWidget的父窗口小部件(红色)是QMainWindow,然后是QMainWindow的几何引用。 QPushButton的父Widget是QWidget(绿色),然后由QWidget(绿色)引用几何。并且所有小部件都一样......

因此,QMainWindow可以完全控制孩子的小部件。例如,如果自我删除,所有孩子也将遵循删除。等

但是,如果我们设置QWidget的父Widget(红色)是None,那就意味着这个QWidget就像新窗口一样。喜欢这张照片;

2 top-level window

目前,我们有2个顶级窗口。但QWidget与QMainWindow独立。如果自我删除,所有孩子都会关注删除但不在QMainWindow之外。外部QWidget不能删除。因此,一些应用程序创建了许多小部件,但它将在主菜单中具有控制子级的主要小部件。

不仅是窗框,它只是示例&比较。


此致