22

書き込みたいファイルから相対パスを取得しようとしています。ここに状況があります:

にconfファイルを保存しますD:\confs\conf.txt。私のプログラムには、から読み取ったいくつかのファイルがありますD:\images\image.bmp。私conf.txtは持っていたい../images/image.bmpです。

QDirorのような便利なクラスがいくつかQFileInfoありますが、どれを使用するのが最適かわかりません。私は試した:

QDir dir("D:/confs");
dir.filePath(D:/images/image.bmp) // Just return the absolute path of image.bmp

ドキュメントを読んだところfilePath、ディレクトリセット内のファイルでのみ機能すると書かれていますが(こちらD:\confs)、別のディレクトリから検索して相対パスを取得するように指示する方法があるかどうか疑問に思います。

4

2 に答える 2

19

次の方法を探しています。

QString QDir::relativeFilePath(const QString & fileName) const

ディレクトリに相対的な fileName へのパスを返します。

QDir dir("/home/bob");
QString s;

s = dir.relativeFilePath("images/file.jpg");     // s is "images/file.jpg"
s = dir.relativeFilePath("/home/mary/file.txt"); // s is "../mary/file.txt"

上記の例に従ってコードを変更すると、次のようになります。

QDir dir("D:/confs");
dir.relativeFilePath("D:/images/image.bmp") // Just return the absolute path of image.bmp
//           ^                   ^

全体として、設定パスとイメージ パスを結び付けてしまうため、これは悪い考えかもしれません。つまり、どちらかを移動すると、アプリケーションは動作を停止します。

欠落している引用符にも注意してください。

于 2014-06-02T20:19:13.513 に答える
4
QDir dir("D:/confs");
dir.relativeFilePath("D:/images/image.bmp");
于 2014-06-02T19:18:41.913 に答える