QPolygonF 深拷贝
时间: 2023-07-22 20:55:29 浏览: 51
QPolygonF 的拷贝构造函数和赋值运算符都会执行深拷贝,也就是会拷贝所有点的数据。因此,使用这些函数可以得到一个完全独立的 QPolygonF 对象,对它的修改不会影响原来的对象。
例如,假设有一个 QPolygonF 对象 polygon1:
```c++
QPolygonF polygon1;
polygon1 << QPointF(0, 0) << QPointF(1, 1) << QPointF(2, 2);
```
如果你想要深拷贝 polygon1,可以这样做:
```c++
QPolygonF polygon2 = polygon1; // 使用赋值运算符
QPolygonF polygon3(polygon1); // 使用拷贝构造函数
```
现在,polygon2 和 polygon3 都是 polygon1 的深拷贝,它们是独立的对象,对它们的修改不会影响原来的对象 polygon1。
相关问题
QPolygonF 拷贝
如果你想拷贝一个 QPolygonF 对象,可以使用它的拷贝构造函数或者赋值运算符。例如:
```c++
QPolygonF polygon1;
// 添加一些点到 polygon1 中
// 使用拷贝构造函数
QPolygonF polygon2(polygon1);
// 或者使用赋值运算符
QPolygonF polygon3;
polygon3 = polygon1;
```
这样就可以得到一个与原来对象完全一样的新对象。注意,在拷贝 QPolygonF 对象时,它的所有点都会被拷贝,因此这可能会比较耗费内存。
多个 QPolygonF 合并
要合并多个 QPolygonF,可以按以下步骤操作:
1. 创建一个新的 QPolygonF 对象,用于存储合并后的多边形。
2. 循环遍历所有要合并的 QPolygonF 对象,将它们的所有点添加到新的 QPolygonF 对象中。
3. 对新的 QPolygonF 对象执行一次 simplify() 操作,以去除可能存在的重复点和不必要的点。
以下是示例代码:
```cpp
QVector<QPolygonF> polygons; // 存储多个 QPolygonF 对象的向量
QPolygonF mergedPolygon; // 合并后的 QPolygonF 对象
// 循环遍历所有要合并的 QPolygonF 对象
for (const QPolygonF& polygon : polygons) {
// 将当前多边形的所有点添加到合并后的多边形中
mergedPolygon += polygon;
}
// 对合并后的多边形进行简化操作,去除不必要的点
mergedPolygon = mergedPolygon.simplified();
// 现在,mergedPolygon 就是合并后的 QPolygonF 对象
```
注意,这个方法只能合并不相交的多边形。如果要处理相交的多边形,需要使用更复杂的算法。