Хорошо, я в основном случайным образом размещаю графические элементы на графической сцене. Я открываю окно и показываю эти предметы. Когда я изменяю размер окна, я хочу, чтобы эти элементы оставались того же размера, но перемещались пропорционально размеру окна. Как я это сделал, я создал подкласс графического представления, а затем, когда произошло событие изменения размера, он отправил объект изменения размера моему объекту GraphicsScene. Затем я смог сделать что-то вроде этого:
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