QDesktopServices::openUrl() - %20 im Dateinamen (Linux)
Verfasst: 25. März 2008 10:13
Hallo,
in einem bestehenden Programm, welches unter Linux, Mac OS und Windows im Einsatz ist, sollen Verweise zu Dateien hinterlegt werden. Konkret werden die Dateipfade in einer Datenbank abgelegt. Diese sollen per Klick geöffnet werden, wenn der Pfad verfügbar ist.
Bis jetzt habe ich das mit QDesktopServices::openUrl() realisiert. Das funktioniert unter Linux und Windows. Nur leider gibts Probleme, sobald im Pfad Leerzeichen vorkommen. (keine Leerzeichen in Dateien zu verwenden ist keine Option, da auf einen bestehenden Fileserver zurückgegriffen wird, der eine Vielzahl Ordner/Files hält)
Unter Windows lassen sich die Dateien weiterhin öffnen, da die %-Url-Encodierung wohl keine Probleme macht. Unter Linux habe ich partout keine Möglichkeit gefunden, eine Datei mit Space im Namen (bzw. %20) zu öffnen. QDesktopServices gibt keinen Fehler zurück, lediglich in der Konsole bekomm ich
öffnet die Datei leider auch nicht, genauso wenig wie
Wäre auch ein Rückschritt in Sachen Plattformunabhängigkeit.
Kennt jemand einen Workaround, oder eine Alternative, wie ich Platformübergreifend beliebige Dateien aus dem Programm heraus öffnen kann?
[edit] Ich öffne die Datei mit
Per google bin ich auf irgendein IRC-Log gestoßen, wo jemand das gleiche Problem hat. Es hängt wohl mit xdg-open zusammen, der nicht die korrekte Anwendung aufruft. Bringt mich nun aber nicht weiter, außer dass ich mir denke, dass zumindest mein Code korrekt ist.
in einem bestehenden Programm, welches unter Linux, Mac OS und Windows im Einsatz ist, sollen Verweise zu Dateien hinterlegt werden. Konkret werden die Dateipfade in einer Datenbank abgelegt. Diese sollen per Klick geöffnet werden, wenn der Pfad verfügbar ist.
Bis jetzt habe ich das mit QDesktopServices::openUrl() realisiert. Das funktioniert unter Linux und Windows. Nur leider gibts Probleme, sobald im Pfad Leerzeichen vorkommen. (keine Leerzeichen in Dateien zu verwenden ist keine Option, da auf einen bestehenden Fileserver zurückgegriffen wird, der eine Vielzahl Ordner/Files hält)
Unter Windows lassen sich die Dateien weiterhin öffnen, da die %-Url-Encodierung wohl keine Probleme macht. Unter Linux habe ich partout keine Möglichkeit gefunden, eine Datei mit Space im Namen (bzw. %20) zu öffnen. QDesktopServices gibt keinen Fehler zurück, lediglich in der Konsole bekomm ich
EinError: no such file "/path/to/file%20name.suffix"
Code: Alles auswählen
QProcess::startDetached("kfmclient exec '" + filePath + "'");
Code: Alles auswählen
QProcess::startDetached("xdg-open '" + filePath + "'");
Kennt jemand einen Workaround, oder eine Alternative, wie ich Platformübergreifend beliebige Dateien aus dem Programm heraus öffnen kann?
[edit] Ich öffne die Datei mit
Code: Alles auswählen
QDesktopServices::openUrl(QUrl::fromLocalFile(filePath))