Qml项目grabToImage保存图像错误

时间:2018-06-15 09:55:06

标签: image qt save qml

我正在使用

Item.grabToImage()

但是我收到了以下错误。

QML ItemX: grabToImage: item has invalid dimensions

这是因为我使用了高度和宽度属性,如下所示:

width: {
    // return with * 0.4; based for some condition
    // for eg
    return parent.width * 0.4;
}

// and something similar with height

我能让下面的代码工作的唯一时间是我输入静态高度和宽度:

grabToImage(
    function(result)
    {
        result.saveToFile("/path/project-name/tmp/something.png");
    }
);

关于为什么以及如何解决这个问题的任何想法?

谢谢

1 个答案:

答案 0 :(得分:0)

我不确定100%为什么,但这与父级的动态宽度有关。

在我编写的程序中,我已将图像的锚点设置在预览容器的左侧和右侧。

因此,当我尝试从另一个覆盖图像的项目中捕获图像以切出图像的较小部分时,它并没有让我进入。 我的解决方法是设置源图像的固定图像大小,然后将其锚定到预览部分的中心。

现在唯一的事情是,如果您缩放窗口,它将不会放大。 我确定我可以实现并在大小上更改到主程序窗口,然后设置图像的宽度(未测试)。

最后我要指出的是,如果图像较小,则从源图像的各个部分切出的图像将变得模糊且质量不好。 我通过将“ sourceSize.width”设置为非常大的图像来解决此问题,然后使用“ scale”属性将图像缩小以适合预览项目。