qml grabToImage saveToFile在桌面上的Android上返回false

时间:2017-06-12 09:35:06

标签: android ios qt qml qtquick2

以下qml(QtQuick 2.7)代码在桌面(Linux,Windows,OSX)上返回true但在Android和ios上返回false(用于写入外部存储的Android权限在Manifest.Xml中设置)。

移动设备上的代码有什么问题? (imagePath已正确解析为标准图片位置,即Android上的存储/仿真/ 0 /图片)。

item.grabToImage(function(result) {
                    console.log(result.saveToFile(imagePath + "/picture.png"))
                });

1 个答案:

答案 0 :(得分:0)

QQuickItemGrabResult::saveToFile()调用QImage::save(),遗憾的是,除了bool返回值之外,没有任何错误报告。

如果我是你,我会将changeDividerColor(yournumberpicker, Color.parseColor("#00ffffff")); 的定义更改为以下内容,然后构建qtbase:

QImage::save()

这有望告诉您无法保存图像的原因。

如果无法自行构建Qt,您可以使用QImageWriter尝试直接保存图像,并以此方式了解有关错误的更多信息。您可以将其添加到现有的main.cpp文件中:

bool QImage::save(const QString &fileName, const char *format, int quality) const
{
    if (isNull())
        return false;
    QImageWriter writer(fileName, format);
    const bool saved = d->doImageIO(this, &writer, quality);
    qDebug() << writer.errorString();
    return saved;
}

一旦您知道无法保存图像的原因,就可以删除此代码。