将 QVector<QPoint> points 中的点位用线连接起来
时间: 2024-02-21 11:57:52 浏览: 194
可以通过 QPainter 绘图工具类来实现将 QVector<QPoint> 中的点位用线连接起来的效果。具体步骤如下:
1. 在需要绘制的地方创建 QPainter 对象。
2. 设置绘制的线宽和颜色等属性。
3. 调用 QPainter::drawPolyline 方法,将 QVector<QPoint> 中的点位用线连接起来。
4. 最后记得释放 QPainter 对象。
示例代码如下:
```c++
QPainter painter(this);
painter.setPen(QPen(Qt::red, 2)); // 设置画笔颜色和线宽
painter.drawPolyline(points); // 将点位用线连接起来
painter.end(); // 释放 QPainter 对象
```
其中,this 表示当前绘制区域的指针,points 是 QVector<QPoint> 类型的点位数据。
相关问题
可以转为qvector<qvector<qpoint>>吗
可以的。将每个Point类型的向量转换为QVector<QVector<QPoint>>类型的向量,可以使用以下代码:
```cpp
vector<vector<Point>> contours;
// 调用 findContours 函数得到 contours
QVector<QVector<QPoint>> qContours(contours.size());
for (size_t i = 0; i < contours.size(); i++) {
QVector<QPoint> qPoints(contours[i].size());
for (size_t j = 0; j < contours[i].size(); j++) {
QPoint point(contours[i][j].x, contours[i][j].y);
qPoints[j] = point;
}
qContours[i] = qPoints;
}
```
这里使用了QVector和QPoint类,需要包含头文件<QVector>和<QPoint>。
std::vectorcv::Point转换为QVector<QVector<QPoint>>
将`std::vector<cv::Point>`转换为`QVector<QVector<QPoint>>`的方法如下:
```c++
#include <QVector>
#include <QPoint>
#include <vector>
#include <opencv2/core/core.hpp>
QVector<QVector<QPoint>> vectorCvPointToQVectorQPoint(const std::vector<cv::Point>& points) {
QVector<QVector<QPoint>> qVectors;
QVector<QPoint> qPoints;
for (const cv::Point& point : points) {
qPoints.append(QPoint(point.x, point.y));
}
qVectors.append(qPoints);
return qVectors;
}
```
您可以通过调用 `vectorCvPointToQVectorQPoint` 函数并传入 `std::vector<cv::Point>` 类型的数据来获得`QVector<QVector<QPoint>>`类型的数据。函数将每个`cv::Point`转换为`QPoint`并将其添加到`QVector<QPoint>`中,然后将每个`QVector<QPoint>`添加到`QVector<QVector<QPoint>>`中。
阅读全文