好的,我基本上在图形场景中随机放置了图形项目。我打开一个窗口并显示这些项目。当我调整窗口大小时,我希望这些项目保持相同大小但与窗口大小成比例地重新定位。我是如何做到这一点的,我将图形视图子类化,然后当发生调整大小事件时,它将调整大小对象发送到我的图形场景对象。然后我能够做这样的事情:
double scaleX = double(event->size().width())/double(event->oldSize().width());
double scaleY = double(event->size().height())/double(event->oldSize().height());
然后我使用这些值来做到这一点:
derivedPointItem->setPos( derivedPointItem->pos().x() * scaleX,
derivedPointItem->pos().y() * scaleY );
这工作正常,但如果我将窗口调整得非常小或大,那就不太对了。我认为问题在于图形场景矩形和图形视图矩形不一样或什么。此外,我有一个调整窗口大小的背景:
void roiwindow::drawBackground( QPainter* painter, const QRectF& rect )
{
this->setSceneRect(0,0,rect.width(),rect.height());
painter->save();
painter->drawImage(rect, *refimage);
painter->restore();
}
这是我正在编写的程序中需要的东西。此外,它允许我查看调整大小是否有效。我基本上可以将背景设置为多边形,然后在多边形的边缘放置点。当我将图像调整为非常大或小时,这些点不再位于多边形的顶点上,尽管它们有点接近。有谁知道更好的方法或解决方法?谢谢。
编辑:这是我正在做的项目:
dropbox.com/s/myxi8kvdl7x9ye2/ncorr.tar.gz