質問

私はこれをどこにもドキュメントには見ていないので、おそらく存在しませんが、念のため:

パラメーターとして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;
};
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top