0

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

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

4

1 回答 1

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 代码,但这主要完成了这项工作。

于 2013-05-30T15:50:01.523 回答