質問
私はこれをどこにもドキュメントには見ていないので、おそらく存在しませんが、念のため:
パラメーターとしてQimagesのベクトルを受け入れる関数があります。各Qimageはある時点でディスクからロードされており、編集されていません。理想的には、私がやりたいのは、すべてのQimageにループして、ファイルパスのリストをXMLファイルに出力することです。
残念ながら、ドキュメントでは、画像がロードされた元のファイルパスを取得する方法はありません。ですから、私の質問は、Qimageのみを与えられて、Qimageが元々ロードされたかどうかのファイルパスを把握することは可能ですか?
の線に沿って何か:
QSTRING QIMAGE :: getoriginalfilepath();
私はこれがおそらく無駄な質問だと知っていますが、それは常に尋ねる価値があると思います。
(ちなみにQT 4.7を使用しています。)
解決
私はコードを調べましたが、その情報はどこにも保存されていないように見えます。 Qimage :: Load(およびConstructor)は、Qimagereader(Filename、format).read()を使用し、結果をそれ自体にコピーします。 QIMAGEREADERは、読み取りが終了するとすぐに、デバイス表現(開いたファイルオブジェクト)を削除するように設定されています。
したがって、要約すると、これは不可能だと思われます。
他のヒント
また、私にとっては、Qimageがそのパスを取得するためのインターフェイスを提供しないようです。また、Qimageを特定のパスに結び付ける必要がないため、これは欠落している機能ではないと思います。すべてのユースケースの大部分では、Qimageには対応する物理ファイルがありません。
したがって、あなたの状況で最善の方法は、Qimageをサブクラス化してこの機能を追加することです。
class MyImage : public QImage {
QString path_;
public:
MyImage(const QString& path);
QString path(); // getter
};
実装の詳細を省略します。
私は通常、Qimageと画像パスを保持するための構造体を作成します。
struct Image
{
QImage imageData;
QString filename;
};