Почему это:
graphics_view->fitInView(scene->sceneRect(), Qt::KeepAspectRatio);
не работает, как ожидалось? Он неправильно вписывается в прямоугольник сцены, показывая поля вокруг него.
Почему это:
graphics_view->fitInView(scene->sceneRect(), Qt::KeepAspectRatio);
не работает, как ожидалось? Он неправильно вписывается в прямоугольник сцены, показывая поля вокруг него.
Причина в следующем: https://bugreports.qt.io/browse/QTBUG-42331 - пожалуйста, проголосуйте за него в системе отслеживания ошибок qt, чтобы повысить его приоритет.
Короче говоря, в fitInView жестко заданы поля, и это может привести к разного рода хаосу, наименьший из которых заключается в том, что теперь вы теряете несколько пикселей области отображения, а также можете вызвать ненужное масштабирование.
Вы можете решить эту проблему, повторно реализовав fitInView на основе существующей реализации, но удалив ее нелепые поля. Пример этого доступен здесь на python, основанный на исходной версии C++:
https://github.com/nevion/pyqimageview/blob/master/qimageview/widget.py#L276
Я понял, в чем проблема, она описана в этом вопросе а>. Основная причина проблемы заключается в том, что вы не должны вызывать fitInView до того, как форма будет показана.
Вы можете исправить это, повторно реализуя исходный метод fitInView, но не включая поля. Проверьте мое решение C++ по адресу: https://stackoverflow.com/a/42474510/6050364.