Qt QML:使用QMLTemplate实现GrabToImage功能

时间:2016-03-13 15:16:58

标签: c++ qt qml

我正在使用Qt QML项目。我需要在处理过程中创建一些图像。实际的图像创建和存储应该在后台进行。

为此,我有一个qml模板文件,如下所示

import QtQuick 2.0

Item {
    id:area
    width:960
    height: 960
    visible: true

    Image {
      id: name
      source: "file.jpg"
      anchors.fill: parent
    }

    StudentDetails
   {
      anchors.centerIn: parent
   }

}

我想从cpp函数向这个QML文件渲染一些细节。即我想从数据库更新一些学生详细信息并渲染到此qml并存储为图像。 为此,我尝试了以下所有方法。

// Using QQmlComponent
QQmlEngine engine;
QQmlComponent component(&engine,
    QUrl::fromLocalFile("MyItem.qml"));
QObject *object = component.create();
object->grabToImage(function(resut){result.saToFile("Stud01.png");}, Qt.size(960, 960));

实际上,这个grabToImage调用在这里不起作用。这只是一个qml模板,我不打算加载这个qml。只需更新一些螺柱细节并存储为图像。我还尝试在qml中调用一个函数,并在qml文件中调用抓取图像调用。

但在这两种情况下它都不起作用。我收到错误,因为它没有附加到窗口,因此Item :: GrabToImage将无法正常工作。

我可以这样做吗?我无法保存QML模板中的图像。有没有其他方法可以将qml保存为图像。

0 个答案:

没有答案