![]() |
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仍然具有
|
![]() |
NoamShabat · 有没有办法转换QtCore。问题。字符串的键 1 年前 |
![]() |
Vlad · 如何使小部件的PyQt事件预先运行? 1 年前 |
![]() |
Shane O Neil · 为什么PyQt5没有显示按钮? 1 年前 |
|
chacoff · Qdatastream缓冲区:十六进制输出不正确 2 年前 |
|
Toloka · Qpainter绘制图像边界不透明 2 年前 |