使用QFileDialog
,允许用户浏览文件(打开),它将文件列表作为QUrl
返回
QFileDialog dialog;
dialog.setFileMode(QFileDialog::ExistingFile);
dialog.setAcceptMode(QFileDialog::AcceptOpen);
if (!dialog.exec() || dialog.selectedUrls().size()==0) return;
QUrl url = dialog.selectedUrls()[0];
此后,提供的URL为以下格式:
文件:/// C:/用户/[...]/test.xml
文件:/// home / [...] /test.xml
这似乎不适用于
std::ifstream
,所以我试图对路径进行非标准化。为此,我尝试了以下操作:QUrl nUrl = url.adjusted(QUrl::RemoveScheme | QUrl::RemovePassword | QUrl::RemoveUserInfo |
QUrl::RemovePort| QUrl::RemoveAuthority | QUrl::RemoveQuery |
QUrl::RemoveFragment | QUrl::StripTrailingSlash |
QUrl::NormalizePathSegments);
它以以下格式返回路径:
/ C:/用户/[...]/test.xml
/home/[...]/test.xml
第一个斜杠在Linux上有效,但在Windows上无效。如果我删除第一个斜杠,它将在Windows上有效,但在Linux上则无效。
问题是:
如何可靠地将
QUrl
转换为std::fstream
接受的格式? 最佳答案
尝试使用QUrl :: toLocalPath而不是QUrl :: adjusted
关于c++ - 使用`QUrl`作为文件路径提要到`std::fstream`,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43178701/