Поля QGraphicsView fitInView

Почему это:

graphics_view->fitInView(scene->sceneRect(), Qt::KeepAspectRatio);

не работает, как ожидалось? Он неправильно вписывается в прямоугольник сцены, показывая поля вокруг него.


person Tarantula    schedule 28.10.2013    source источник
comment
Добавьте минимальный пример кода и снимок экрана, а также то, чем он отличается от того, что вы ожидаете.   -  person Frank Osterfeld    schedule 29.10.2013


Ответы (3)


Причина в следующем: https://bugreports.qt.io/browse/QTBUG-42331 - пожалуйста, проголосуйте за него в системе отслеживания ошибок qt, чтобы повысить его приоритет.

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

Вы можете решить эту проблему, повторно реализовав fitInView на основе существующей реализации, но удалив ее нелепые поля. Пример этого доступен здесь на python, основанный на исходной версии C++:

https://github.com/nevion/pyqimageview/blob/master/qimageview/widget.py#L276

person Jason Newton    schedule 05.05.2015


Вы можете исправить это, повторно реализуя исходный метод fitInView, но не включая поля. Проверьте мое решение C++ по адресу: https://stackoverflow.com/a/42474510/6050364.

person Adriel Jr    schedule 26.02.2017