我有一个QML项目,我试图grab as an image。有了这样的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"。
出了什么问题?如何将文件保存到图像中?
答案 0 :(得分:3)
问题是url
提供的FileDialog
无法作为saveToFile
的参数。
虽然saveToFile
method没有记录所需的参数类型,但the source code表明它需要QString
。
fileUrl.toString()
可能会导致结果
"file:///Users/phrogz/Document/Test.png"
saveToFile
方法需要一个像"/Users/phrogz/Document/Test.png"
因此:
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);
}
});
}
}