qgraphicsscene*赋值给另一个,并且该qgraphicsscene不被另一个影响
时间: 2024-09-30 13:10:48 浏览: 24
一个用pyqt5做的拼图小游戏.7z
5星 · 资源好评率100%
在Qt图形界面库中,QGraphicsScene是一个用于管理场景内容(如图形、视图等)的核心类。当你将一个QGraphicsScene对象赋值给另一个变量时,实质上是在复制这个对象的引用,而不是创建一个新的副本。这意味着,如果你修改其中一个场景的内容,另一个场景会看到同样的改变,因为它们指向的是相同的底层数据。
例如:
```cpp
QGraphicsScene scene1;
// 对scene1进行一些操作
QGraphicsScene *scene2 = &scene1; // 将scene1的地址赋值给scene2
// 现在scene2也直接操作scene1的内容
scene1.addItem(new QGraphicsItem()); // 这里添加了一个元素到两个场景中
```
如果你想保持两个独立的场景,你应该对scene2进行深拷贝,或者创建一个新的QGraphicsScene实例并传递其内容:
```cpp
QGraphicsScene scene1;
QGraphicsScene scene2 = scene1.scene(); // 使用scene()函数创建浅拷贝
// 或者
QGraphicsScene scene2 = QGraphicsScene(scene1); // 创建新的独立实例
```
在这种情况下,scene2有自己的内存空间,修改scene2不会影响scene1。
阅读全文