QGraphicsItem 的坐标问题

    这几天因为要做一个效果需要用到QGraphics框架,主要用到了QGraphicsItem、QGraphicsView和QGraphicsScene三个类。其中用scene来添加和管理item,用view去进行数据展现,最开始使用的时候添加item用到了他的一个方法setpos,但是看起来没有生效,但对比qt自带的graphicsView里的例子又看不出问题。

 

     后来经过分析,发现我的view因为放在layout里,在显示的时候被resize了,导致了view和scene的坐标不一致。在view的resizeEvent里overwrite即可。

void
graphicsView::resizeEvent(QResizeEvent *event)
{
    qDebug()<<"graphicsView::resizeEvent";
    QGraphicsView::resizeEvent(event);
    graphicsScene *scene = (graphicsScene*)(this->scene());
    QSize newSize = event->size();
    QRectF newRc(0,0,newSize.width(),newSize.height());
    scene->setSceneRect(newRc);
    scene->update(newRc.x(),newRc.y(),newRc.width(),newRc.height());
}

你可能感兴趣的:(框架,layout,qt)