2011年12月4日日曜日

( Qt C++ )バイナリデータの読み込み


今日でC++ GUI Programming with Qt4はXMLの章まで終わりました。明日中に終わりますねこれ。

はい、それでは話を戻して表題のバイナリデータの読込をやっていきます。
データの読込は書き出し処理のあたりまえですが逆を行います。下記は前回の記事(バイナリデータの書き込み)の対となるプログラムです。


( C++ GUI Programming with Qt4 275ページより)

quint32 n;
QImage image;
QMap<QString, QColor> map;
QFile file("facts.dat");

if (!file.open(QIODevice::ReadOnly)) //読込のみで開く
{
    return;
}

QDataStream in(&file);//オブジェクト作成
in.setVersion(QDataStream::Qt_4_1);//読込むバージョンを指定
in >> n >> image >> map; //それぞれ取り出し

まず最初の宣言部は問題ないでしょう。入れ物に使うだけですので特に注意点はありません。
if (!file.open(QIODevice::ReadOnly))で読込のみで開き、エラーがないかどうか確認しています。

エラーがなければ QDataStreamのオブジェクトを読込んだファイルで作成しています。
その後setVertionでQDataStream::Qt_4_1、つまり読込むバージョンを指定しています。
ここは注意が必要で書き出しの際に使ったものと常に同じでなければならないようです。

以上です。次回は生データの直接の読み書きです。