Допустим, есть QQuickWidget, в который загружен QML-объект. Размеры этого виджета могут изменяться (он помещён в Layout и лежит уже в нормальном C++ Qt окне). Хотелось бы, чтобы содержимое при этом масштабировалось. Пробовал вот такое:
QSize baseSize(m_quickWidget.rootObject()->width(), m_quickWidget.rootObject()->height());
float scaleX = (float)m_quickWidget.width() / baseSize.width();
float scaleY = (float)m_quickWidget.height() / baseSize.height();
float scale = qMin(scaleX, scaleY);
m_quickWidget.rootObject()->setScale(scale);
Содержимое виджета масштабируется, но весьма криво - центр трансформации как бы не совпадает с центром объекта, как следствие, он не только меняет ширину и высоту, но и съезжает влево-вверх (по факту его часть выходит за границу QQuickWidget и обрезается). При этом позиция виджета (m_quickWidget.rootObject()->position()) остаётся неизменной, так что вернуть его обратно её обнулением не получится.
Как сделать так, чтобы масштабирование работало нормально?