QGraphicsView中的网格

时间:2014-11-10 09:23:41

标签: c++ qt qgraphicsview

我想在我的graphicsView中实现网格,使其自动适合graphicsView,当我放大graphicsView时,只有网格的块大小应该增加,而不是网格的线宽。我尝试了以下但没有发生任何事情。

void CadGraphicsScene::grid(QPainter *painter, const QRectF &rect)
{
    QPen pen;
    painter->setPen(pen);

    qreal left = int(rect.left()) - (int(rect.left()) % gridSize);
    qreal top = int(rect.top()) - (int(rect.top()) % gridSize);
    QVector<QPointF> points;
    for (qreal x = left; x < rect.right(); x += gridSize){
        for (qreal y = top; y < rect.bottom(); y += gridSize){
            points.append(QPointF(x,y));
        }
    }
    painter->drawPoints(points.data(), points.size());
}

请帮我制作一个网格。

1 个答案:

答案 0 :(得分:0)

1)使用化妆笔(零宽度) 2)通过QT成语图形场景独立于视图(关于放大图形视图的问题),但您可以从传递的QPainter对象(QPainter * painter)中提取缩放视图系数 - QPainter :: worldTransform - &gt; QTransform :: m11(horz_Scale)&amp; QTransform :: m22(vert_Scale) - 在这种情况下,您可以在'fly'上重新计算网格锚点(对于100%缩放QTransform :: m11 == QTransform :: m22 == 1.)