qt c++重写继承QGraphicsView批量传入点集并以十字画在图像上
时间: 2023-05-17 07:05:18 浏览: 213
可以使用QPainter在QGraphicsView上绘制十字线,具体实现可以参考以下代码:
```
class MyGraphicsView : public QGraphicsView
{
public:
MyGraphicsView(QWidget* parent = nullptr) : QGraphicsView(parent) {}
void drawCrossLines(const QVector<QPointF>& points)
{
// 获取视图的场景
QGraphicsScene* scene = this->scene();
if (!scene) return;
// 创建画笔
QPen pen(Qt::red);
pen.setWidth(2);
// 绘制十字线
QPainter painter(viewport());
painter.setPen(pen);
for (const QPointF& point : points)
{
QPointF scenePos = mapToScene(point.toPoint());
painter.drawLine(QPointF(scenePos.x(), 0), QPointF(scenePos.x(), scene->height()));
painter.drawLine(QPointF(0, scenePos.y()), QPointF(scene->width(), scenePos.y()));
}
}
};
```
然后在使用时,可以这样调用:
```
QVector<QPointF> points;
// 添加点集
points.append(QPointF(100, 100));
points.append(QPointF(200, 200));
points.append(QPointF(300, 300));
MyGraphicsView* view = new MyGraphicsView();
// 设置场景
view->setScene(new QGraphicsScene());
// 批量绘制十字线
view->drawCrossLines(points);
```
这样就可以在MyGraphicsView上批量绘制点集的十字线了。
阅读全文