2010-07-07 8 views
15

Mögliche Duplizieren der Konstruktion:
Qt equivalent of PathAppend?Plattformübergreifender Weg, um einen FS Weg mit Qt

Kurzgeschichte: hat Qt 4 haben ein Analogon von Pythons os.path.join?

Lange Geschichte: Ich muss einen relativen Pfad zum Anwendungsverzeichnis hinzufügen, QCoreApplication::applicationDirPath() in der richtigen Weise (TM), so dass der Code nicht von der Dateisystem-Verzeichnis Trennzeichen abhängt.

Ist nur der Anschluss von QStrings und die Verwendung von "/" als Trennzeichen eine gute Lösung?

+0

Operatorüberladung kann missbraucht werden, aber das Überladen von 'operator /' für Pfade ist nicht möglich. 'QCoreApplication :: applicationDirPath() /" MySubDir "' ist vollkommen vernünftiger Code. Shame Qt4 hat das nicht. – MSalters

+0

Warum nicht [QDir] (http://doc.qt.nokia.com/4.6/qdir.html) oder ähnliches verwenden? – codymanix

+0

Weil ich keine QDir-Methode sehe, die genau das tut, was ich brauche. Könnten Sie bitte genauer angeben, was Sie vorschlagen? – dpq

Antwort

13

Sie können entweder direkt "/" verwenden oder QDir::separator() verwenden. Aber verwenden Sie in der Regel dafür einen QDir (der "/" in den plattformspezifischen Pfadtrenner für Sie übersetzt).

14

Von Qt 4.6 QDir Dokumentation,

Qt verwendet "/" als universelles Verzeichnisseparator in der gleichen Art und Weise, dass "/" als Pfadtrennzeichen in URLs verwendet wird. Wenn Sie immer "/" als Verzeichnistrennzeichen verwenden, übersetzt Qt Ihre Pfade so, dass sie dem zugrunde liegenden Betriebssystem entsprechen.

Also, ich denke, QDir wird für Sie hilfreich sein.

+0

+1 für Dokumente zu verwenden. Wie auch immer, '/' ist ein ziemlich universeller Seperator. Es ist standardmäßig auf POSIX, Mac OS und offiziell von Windows unterstützt. – rubenvb

4

Verwenden Sie einfach "/", wenn Sie in der Qt-Welt bleiben. Um den Pfad für Nicht-Qt-Klassen und -Funktionen usw. zu konvertieren, verwenden Sie QDir :: toNativeSeparators (Pfad).