Не беспокойтесь о том, чтобы самостоятельно масштабировать растровое изображение или даже переводить его, пусть представление сделает это за вас.
Используйте graphicsView->fitInView(pixmap);
, но вы должны прочитать документацию для:
Qt's Framework View Graphics
void QGraphicsView::setSceneRect (QRectF )
void QGraphicsView::translate ( qreal dx, qreal dy )
void QGraphicsView::fitInView ( const QGraphicsItem * item, ... )
Способ взаимодействия QGraphicsScene и QGraphicsView заключается в том, что у вас может быть одна сцена с как минимум одним или несколькими представлениями.
Хороший пример, который мне нравится вспоминать, - это увеличенное изображение части карты с мини-изображением всей карты в углу. Есть два вида, один из части карты и один из всей карты, с одной сценой, сама карта.
Таким образом, вы помещаете предметы в свою сцену, и все предметы в сцене рисуются относительно друг друга по размеру. «Прямоугольник сцены» вашего вида по умолчанию масштабируется, чтобы соответствовать элементам в представлении до тех пор, пока одна единица в сцене не станет одним пикселем в представлении или до тех пор, пока ему не потребуется уменьшить масштаб, чтобы соответствовать всем элементам в вашей сцене.
Если вы вызываете fitInView (someItem), он должен масштабировать ваш вид сцены так, чтобы указанный элемент заполнил его и переместил вид так, чтобы он был центрирован. Если вам нужно перевести или масштабировать больше, используйте функции translate
или scale
в QGraphicsView.
Когда вы перемещаетесь между системами координат вашей сцены и просмотра с помощью QRect или QPoint, используйте вспомогательные функции: mapToScene
и mapFromScene
из QGraphicsView.