Qlist<QGraphicsItem> 用 foreah 便利赋值
时间: 2023-12-16 22:06:39 浏览: 34
您可以使用 foreach 循环遍历 QList<QGraphicsItem> 中的元素,并将其赋值给一个新的 QList<QGraphicsItem> 变量。例如:
```cpp
QList<QGraphicsItem> originalList;
// 添加一些元素到 originalList 中
QList<QGraphicsItem> copiedList;
foreach (QGraphicsItem *item, originalList) {
copiedList.append(item);
}
```
上述代码会创建一个名为 copiedList 的新 QList<QGraphicsItem> 对象,并将 originalList 中的所有元素复制到其中。请注意,这种方式只适用于 QList<QGraphicsItem> 中元素的浅拷贝,如果 QList<QGraphicsItem> 中的元素是指针类型,则只会复制指针,而不是指针指向的对象。如果需要深拷贝 QList<QGraphicsItem> 中的元素,请使用 QList 的 copy() 方法或手动进行深拷贝。
相关问题
QList<QGraphicsItem*> items = scene()->items(); QList<Enemy*> enemies;
这段代码是在Qt中获取场景中的所有图形项,并将其中类型为Enemy的图形项添加到一个QList中。具体解释如下:
1. `QList<QGraphicsItem*> items = scene()->items();`:使用`scene()`方法获取当前窗口中的QGraphicsScene对象,并调用其`items()`方法获取场景中的所有图形项,返回值为QList<QGraphicsItem*>类型的列表。
2. `QList<Enemy*> enemies;`:创建了一个QList<Enemy*>类型的列表,用于存储类型为Enemy的图形项。
3. `for(int i = 0; i < items.size(); i++)`:使用for循环遍历场景中的所有图形项。
4. `Enemy *enemy = dynamic_cast<Enemy*>(items.at(i));`:使用`dynamic_cast`将当前图形项转换为Enemy类型的指针,如果转换成功,则将该指针赋值给`enemy`变量,否则`enemy`变量为NULL。
5. `if(enemy)`:判断`enemy`变量是否为空指针,如果不为空,则说明该图形项是一个Enemy类型的图形项。
6. `enemies.append(enemy);`:将该图形项添加到`enemies`列表中。
这样就可以获取场景中所有类型为Enemy的图形项,并将其添加到一个列表中,方便后续的操作。需要注意的是,使用`dynamic_cast`进行类型转换时,需要确保要转换的类型是继承自QGraphicsItem的类型,否则会出现编译错误。
如何给QList<QList<QString>>赋值
可以通过以下方式给 `QList<QList<QString>>` 赋值:
```cpp
QList<QList<QString>> myNestedList;
QList<QString> innerList1 {"value1", "value2", "value3"};
QList<QString> innerList2 {"value4", "value5", "value6"};
myNestedList << innerList1 << innerList2;
```
这样就可以在 `myNestedList` 中存储两个内部列表,每个内部列表都包含三个字符串。你可以根据需要添加或删除内部列表及其元素。