QPainterPath を描画している QGraphicsScene があり、形状を保存して、アプリの再実行時に再描画できるようにする必要があります。形状、簡略化されたバージョン、および書き込み方法を描画する方法は次のとおりです。
void drawPath(){
QPoint p1 = QPoint(10, 20);
writePointsToFile(p1);
QPoint p2 = QPoint(25, 30);
writePointsToFile(p2);
QPoint p3 = QPoint(40, 60);
writePointsToFile(p3);
QPainterPath path;
path.moveTo(p1.x(), p1.y());
path.lineTo(p2.x(), p2.y());
path.lineTo(p3.x(), p3.y());
}
void writePointsToFile(QPoint point){
QFile file("../path.dat");
file.open(QIODevice::WriteOnly);
QDataStream out(&file);
out << point;
file.close();
}
現在、私のファイルは実行時に書き込まれることはありません。
しかし、それを超えて、形状を再構築できるようにこのデータをシリアル化する正しい方法はありますか?
描き直しはできると思っていたのですが、連載がよくわかりません。
ポイントをシリアル化しますか?ポイントを含むリスト?
ポイントをシリアル化し、逆シリアル化すると、それらをリストに追加すると、リスト内の各ポイントの位置に基づいて形状を再作成できるはずです。つまり、位置 0 のポイントは p1、1 のポイントは p2 などになります。しかし、ファイルに何も書き込まれていないため、ここまで到達できません。さらに、そもそもデータのシリアル化から何を期待できるのか完全にはわかりません。
これに関するヘルプは素晴らしいでしょう。
編集:フィードバックに基づいて、私は今、私の書き込み方法でこれを試みています
QFile file("../path.dat");
file.open(QIODevice::WriteOnly);
QDataStream out(&file);
QDataStream & operator << (QDataStream& file, const QPainterPath& path);
out << path;
file.close();
これは正常にコンパイルされますが、私がそれを正しく行っているかどうかは完全にはわかりませんが、ファイルには何も書き込まれていないため、まだどこかでオフになっていると思います。