我最近在程序中看到了這個錯誤,它曾經很好地工作。我認爲這個錯誤在我做了一個sudo apt-get upgrade
後開始出現,它可能已經升級了我機器上的Qt庫。如果路徑包含空格(在「apt-get upgrade」之後),QDesktopServices :: openUrl()將會失敗
我轉載此錯誤包含此代碼新建項目:
QDesktopServices::openUrl(QUrl("/home/sashoalm/Has Spaces.txt"));
QDesktopServices::openUrl(QUrl::fromLocalFile("/home/sashoalm/Has Spaces.txt"));
這將產生2個的消息框說是相同的 - /home/sashoalm/Has%20Spaces.txt: No such file or directory
。但該文件存在 - 例如,我已驗證,xdg-open "/home/sashoalm/Has Spaces.txt"
正常工作。
任何解決方法?這種錯誤何時發生?我的操作系統是Debian Wheezy。
編輯:我檢查的Qt4的源代碼,以及相關的代碼是這樣(從qdesktopservices_x11.cpp):
return (QProcess::startDetached(client + QLatin1Char(' ') + QString::fromLatin1(url.toEncoded().constData())));
QUrl :: toEncoded()返回file:///home/sashoalm/Has%20Spaces.txt
的百分比編碼路徑。奇怪的是,除了2011年之前更新版權聲明之外,該文件沒有任何更改。因此,它不能改變Qt。但是QDesktopServices :: openUrl()發出的命令是xdg-open file:///home/sashoalm/Has%20Spaces.txt
,這在我的電腦上不起作用。也許它曾經工作過,並且xdg-open的更新本身就打破了它?有誰知道xdg-open是否應該使用百分號編碼來處理file:///
?
嗯,奇怪。 'QDesktopServices :: openUrl(QUrl :: fromLocalFile(「d:\\ a b \\ c d.txt」));'在Windows上工作得很好。 – vahancho 2014-11-21 14:45:18