![]() |
1
1
当你 add the item to the scene, Qt takes ownership of it ,所以您不需要在Python端保留对它的显式引用。这意味着当场景被删除时,该项目的C++部分也会被删除——如果没有其他引用保存到Python部分,它也将被垃圾收集(因此将没有剩下任何东西)。
当你
remove
the item from the scene, ownership passes back to the caller
,他现在完全有责任删除它。如果
删除pyqt包装器的方法与任何其他python对象相同,即使用
在您的示例中,实际上您从未尝试删除该项,因此SIP报告的信息完全如预期的那样。
最后,请注意,始终可以独立于PYQT包装器删除C++部分。如果您这样做,然后尝试访问项的方法,您将得到
更新 : 下面是一个演示,演示了当项目从场景中移除并允许其超出范围时,如何对其进行垃圾收集。当然,如果在其他地方有任何对该项目的引用(即,如果引用计数为>1),则不会删除该项目。
输出:
|
![]() |
2
0
删除后不会让它超出范围。它被从所有qt中删除,但python仍然具有
|
![]() |
benroths · PyQt5/Python3参考qss文件 3 年前 |
![]() |
K.Mulier · PyQt5:如何将QObject移动到主线程? 7 年前 |
![]() |
ecjb · 使用QComboBox选择显示的不同小部件集 7 年前 |