Qt 使用grabToImage将QML项作为映像保存到文件时出错
我有一个QML项目,我正在尝试。像这样的QMLQt 使用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)){
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);
}
});
}
}