(1) QGraphicsView、QGraphicsScene坐标系問題,場景初始狀态(0,0)在QGraphicsView的中間,随着添加item,(0,0)位置會發生變化。想要scene和view保持同樣大小可采用方法
正确的解決方案是setSceneRect(0,0,W,H);而且需要
W>=static_cast< QWidget *>(graphicsScene->parent())->size().width()
H>=static_cast< QWidget *>(graphicsScene->parent())->size().height()
graphicsScene = new QGraphicsScene(this);
graphicsView = new QGraphicsView(graphicsScene,this);
QSize windowsize =this->size();
graphicsView->setFixedSize(this->width(),this->height());
graphicsScene->setSceneRect(0,0,static_cast<QWidget *>(graphicsScene->parent())->size().width(),static_cast<QWidget *>(graphicsScene->parent())->size().height());
graphicsScene->addLine(0,0,100,100);
(2)恢複GraphicsView的縮放
pView->setTransformationAnchor(QGraphicsView::AnchorViewCenter);
QMatrix matrix;
matrix.setMatrix(1, pView->matrix().m12(), pView->matrix().m21(), 1, pView->matrix().dx(), pView->matrix().dy());
pView->setMatrix(matrix, false);