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))