我在QGraphicsScene中有一些QGraphicsItems,在縮放時應該保持相同的大小和位置。我試過QGraphicsItem :: ItemIgnoresTransformations,但事實證明,項目得到錯誤的立場。下面是一個示例代碼:如何在縮放視圖時保持QGraphicsItem的大小和位置?
我有子類的QGraphicsView這樣的:
class Graphics : public QGraphicsView
{
public:
Graphics();
QGraphicsScene *scene;
QGraphicsRectItem *rect;
QGraphicsRectItem *rect2;
protected:
void wheelEvent(QWheelEvent *event);
};
,並在其構造函數:
Graphics::Graphics()
{
scene = new QGraphicsScene;
rect = new QGraphicsRectItem(100,100,50,50);
rect2 = new QGraphicsRectItem(-100,-100,50,50);
scene->addLine(0,200,200,0);
rect->setFlag(QGraphicsItem::ItemIgnoresTransformations, true);
scene->addItem(rect);
scene->addItem(rect2);
setScene(scene);
scene->addRect(scene->itemsBoundingRect());
}
的wheelEvent虛函數:
void Graphics::wheelEvent(QWheelEvent *event)
{
if(event->delta() < 0)
scale(1.0/2.0, 1.0/2.0);
else
scale(2, 2);
scene->addRect(scene->itemsBoundingRect());
qDebug() << rect->transform();
qDebug() << rect->boundingRect();
qDebug() << rect2->transform();
qDebug() << rect2->boundingRect();
}
原單視圖看起來像這樣: 1
以路線作爲道路,並將其作爲標誌放在一邊。當縮小時,矩形保持其大小,但跳出場景: 2
這應該是指令中間行的矩形。我也混淆了調試信息,顯示boundingRect和transform保持不變,這似乎沒有任何改變!是什麼導致了這個問題,有什麼辦法可以解決它?有人可以幫忙嗎?謝謝!