web-dev-qa-db-ja.com

Qtのファイルから相対パスを取得する

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

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

QDirQFileInfoなどの便利なクラスがいくつかありますが、どのクラスが最適かわかりません。私は試した:

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

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

19
user3627590

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

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
//           ^                   ^

全体として、構成パスとイメージパスを結合するため、何をするかは悪い考えかもしれません。つまりそれらのいずれかを移動すると、アプリケーションは動作を停止します。

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

17
lpapp
QDir dir("D:/confs");
dir.relativeFilePath("D:/images/image.bmp");
4
ch0kee