Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 使用grabToImage将QML项作为映像保存到文件时出错_Qt_Qml_Qt Quick - Fatal编程技术网

Qt 使用grabToImage将QML项作为映像保存到文件时出错

Qt 使用grabToImage将QML项作为映像保存到文件时出错,qt,qml,qt-quick,Qt,Qml,Qt Quick,我有一个QML项目,我正在尝试。像这样的QML Item { id: content ... } FileDialog { folder: shortcuts.documents selectExisting: false onAccepted: { content.grabToImage(function(result){ if (!result.saveToFile(fileUrl)){

我有一个QML项目,我正在尝试。像这样的QML

Item {
    id: content
    ...
}

FileDialog {
    folder: shortcuts.documents
    selectExisting: false
    onAccepted: {
        content.grabToImage(function(result){
            if (!result.saveToFile(fileUrl)){
              console.error('Unknown error');
            }
        });
    }
}
…我总是得到“未知错误”文本,即使我输入了“Test.png”这样的文件名


怎么了?如何将文件保存到图像?

问题在于,
FileDialog
提供的
url
作为
saveToFile
的参数无效

虽然没有记录所需的参数类型,但显示它需要一个
QString

然而,这还不够。您还必须从文件URL中删除协议,才能使其正常工作。例如,虽然
fileUrl.toString()
可能导致
”file:///Users/phrogz/Document/Test.png“

saveToFile
方法需要一个类似
“/Users/phrogz/Document/Test.png”

因此:


问题在于,
FileDialog
提供的
url
作为
saveToFile
的参数无效

虽然没有记录所需的参数类型,但显示它需要一个
QString

然而,这还不够。您还必须从文件URL中删除协议,才能使其正常工作。例如,虽然
fileUrl.toString()
可能导致
”file:///Users/phrogz/Document/Test.png“

saveToFile
方法需要一个类似
“/Users/phrogz/Document/Test.png”

因此:


我已打开跟踪此问题的窗口。显然,该URL应该被
saveToFile
直接接受。哇,digia通常几年都不会修复bug,但他们在你找到它之前整整一年就修复了你的bug:D@ddriver哈。哎呀。我是说,我已经开始跟踪这个问题了。显然,该URL应该被
saveToFile
直接接受。哇,digia通常几年都不会修复bug,但他们在你找到它之前整整一年就修复了你的bug:D@ddriver哈。哎呀。我是说。
FileDialog {
    folder: shortcuts.documents
    selectExisting: false
    onAccepted: {
        var urlNoProtocol = (fileUrl+"").replace('file://', '');
        content.grabToImage(function(result){
            if (!result.saveToFile(urlNoProtocol)){
              console.error('Unknown error saving to',urlNoProtocol);
            }
        });
    }
}