使用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];
此后,提供的网址采用以下格式:
文件:/// C:/用户/ [...] /test.xml
文件:///家/ [...] /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
/家庭/[...]/的test.xml
第一个斜杠适用于Linux,但不适用于Windows。如果我删除第一个斜杠,它将在Windows上运行,但不适用于Linux。
问题是:
如何将QUrl
可靠地转换为std::fstream
接受的格式?
答案 0 :(得分:2)
尝试使用QUrl :: toLocalPath而不是QUrl :: adjusted