2017-05-07 14 views

答えて

1

はい、それは非常に簡単ですそれ? QQuickWindow(または類似のクラス)を使用していますか、それを行うにはQQmlApplicationEngineを使用していますか?など

  • QQuickWindow/QQuickView - それは
  • QQmlApplicationEngineが含まれているもののQImageを返すgrabWindow()機能を持っている - あなたはQQuickWindowにキャストし、その後、上記のように行うことができるルートオブジェクトを見つける必要があります。

    QQmlApplicationEngine engine; 
    engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); 
    // Usually the top level object is your window so you can 
    // omit the loop below and go straight for 
    // engine.rootObjects()[0] but it's still wise to check the 
    // result from the casting 
    
    foreach(QObject* obj, engine.rootObjects()) { 
        QQuickWindow* window = qobject_cast<QQuickWindow*>(obj); 
        if (window) { 
        QImage image = window->grabWindow(); 
        qDebug() << image; 
        } 
    } 
    

あなたはあなたができるQImageconvert it to QPixmapを取得し、ファイルとして保存したら。

ビューがあるので、Calendarと一緒に直接作業することができ、他のオブジェクト間で「検索」する必要はありません。

+0

完璧に動作します!ありがとう! –

1

ここで重要な部分は、あなたのQMLビューの内容ではありませんが、あなたはどのようにロードします。簡単にするために

は、ビューを想定すると、カレンダー

Calendar 
    { 
     id: calendar 
     anchors.fill: parent 
    } 
+0

答えをありがとう。しかし、QQmlApplicationEngineを使用しているので、取得したい項目がルート項目でない場合は、検索する必要があります。 @dtechが提供するソリューションは、QMLの中からすべてを行うことができるため、私の場合は優れています。 –

+0

私はあなたがQMLの中から 'grabImage()'できることを知りませんでした。 – rbaleksandar

関連する問題