2012-03-11 2 views
0

Я использую QGraphicsView/QGraphicsScene для отображения изображения. Изображение всегда отображается в исходном размере с полосками прокрутки на концах. Я хочу, чтобы QGraphicsView автоматически соответствовал изображению в соответствии с размером окна, поддерживающим соотношение сторон. Я попытался это, но ничего не произошло:Как вставить изображения в QGraphicsView/QGraphicsScene без изменения формата изображения

ui->graphicsView->fitInView(0,0,ui->graphicsView->width(),ui->graphicsView->height(),Qt::KeepAspectRatio); 
+0

Где вы называете этот метод? (В конструкторе некоторые данные геометрии недействительны.) Документация Qt предлагает использовать ее в 'resizeEvent'. Это работает, если вы называете это константами? ('fitInView (0,0, 100, 100, Qt :: KeepAspectRatio);') – sgibb

+0

Да, я вызываю его в конструкторе (по крайней мере, он должен работать один раз), я также пытался использовать постоянные значения, но не влиял –

ответ

11

Вы обеспечиваете прямоугольник зрения и не то, что сцены.

Это должно работать:

ui->graphicsView->fitInView(scene->itemsBoundingRect() ,Qt::KeepAspectRatio); 

itemsBoundingRect вычисляет и возвращает ограничивающий прямоугольник всех элементов на сцене. Таким образом, матрица просмотра графического изображения будет масштабироваться, чтобы соответствовать содержимому сцены.

Я бы посоветовал вам переопределить resizeEvent и позвонить в него.

Смежные вопросы