จะซูมฉาก QML2 ทั้งหมดใน QQuickView ได้อย่างไร

ฉันมีเอกสาร QML2 ซึ่งใหญ่กว่าจอแสดงผลที่แสดงด้วย QQuickView อย่างมาก ใน QML1 และ QtDeclarative คุณสามารถใช้ QGraphicsView::fitInView เพื่อปรับขนาดฉากทั้งหมดได้ (รวมถึงการแมป MouseEvent ที่ถูกต้อง ฯลฯ)

มีอะไรที่คล้ายกันสำหรับ QML2 ที่ฉันยังหาไม่พบหรือไม่


person tzwenn    schedule 29.05.2013    source แหล่งที่มา
comment
คุณต้องปรับแต่งโมเดลวิวเมทริกซ์ของฉาก แต่สุดท้ายฉันได้ดูอินเทอร์เฟซสำหรับสิ่งนี้ไม่พร้อมใช้งาน   -  person user1095108    schedule 29.05.2013
comment
คุณคิดว่าการเพิ่ม QSGTransformNode เป็นพาเรนต์ของ rootObject ที่กำหนดเองอาจช่วยได้หรือไม่   -  person tzwenn    schedule 29.05.2013
comment
คุณสามารถล้อมเอกสารทั้งหมดไว้ในระดับบนสุด Item แล้วซูม-ย้ายเอกสารนั้นได้หรือไม่   -  person peppe    schedule 30.05.2013
comment
นี่คือสิ่งที่ฉันทำ เนื่องจากฉันใช้ QQuickView แบบกำหนดเอง ฉันจึงปรับขนาด rootObject หลังจากสถานะเปลี่ยนเป็น QQuickView::Ready   -  person tzwenn    schedule 30.05.2013


คำตอบ (1)


ฉันคิดวิธีแก้ปัญหาที่มีพฤติกรรมเหมือน 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 เก่าทั้งหมดของฉันอย่างละเอียดถี่ถ้วนก็ตาม

person tzwenn    schedule 30.05.2013