如何在QQuickView中缩放整个QML2场景?

时间:2013-05-29 09:23:52

标签: c++ qml qt5 qtquick2

我有一个QML2文档,它比使用QQuickView显示的显示大得多。 在QML1和QtDeclarative中,可以使用QGraphicsView::fitInView来缩放整个场景(包括正确的MouseEvent映射等)。

QML2有类似的东西我还没找到吗?

1 个答案:

答案 0 :(得分:0)

我提出了一个解决方案,其行为类似于QGraphicsView::fitInView(aRect, Qt::KeepAspectRatio)

void MyQuickView::fitInView(const QRectF & newRect)
{
    QSizeF newSize = newRect.size();
    qreal horizontalScale = size().width() / newSize.width();
    qreal verticalScale = size().height() / newSize.height();

    // You might want to use another origin
    rootObject()->setTransformOrigin(QQuickItem::TopLeft);

    rootObject()->setSize(newSize);
    rootObject()->setScale(qMin(horizontalScale, verticalScale));
}

这主要是工作,虽然我没有彻底测试我所有的旧Qt4.8代码。