天天看點

Qt筆記27:QGraphicsView、QGraphicsScene坐标系問題,QGraphicsView縮放

(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);
           

繼續閱讀