書き込みたいファイルから相対パスを取得しようとしています。ここに状況:
ConfファイルをD:\confs\conf.txt
に保存します。プログラムにD:\images\image.bmp
から読み取ったいくつかのファイルがあります。私のconf.txt
には../images/image.bmp
が欲しいです。
QDir
やQFileInfo
などの便利なクラスがいくつかありますが、どのクラスが最適かわかりません。私は試した:
QDir dir("D:/confs");
dir.filePath(D:/images/image.bmp) // Just return the absolute path of image.bmp
私はドキュメントを読んだところ、filePath
はdirセット(ここではD:\confs
)内のファイルでしか機能しないと書かれていますが、別のディレクトリから検索して彼の相対パスを取得するように指示する方法があるかどうか疑問に思います。
次の方法を探しています。
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
// ^ ^
全体として、構成パスとイメージパスを結合するため、何をするかは悪い考えかもしれません。つまりそれらのいずれかを移動すると、アプリケーションは動作を停止します。
引用の欠落にも注意してください。
QDir dir("D:/confs");
dir.relativeFilePath("D:/images/image.bmp");