問題タブ [qdatastream]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
185 参照

c++ - QDataStream を介してクラスのポインター メンバーを送信するにはどうすればよいですか?

私はユーザー定義のクラスを持っていますMyClass. その定義が次のようになっているとします。

私が持っている場所

このクラスのオブジェクトを に送信したいと思いますQTcpsocketこの回答に従って、私はを使用でき、このQDataStreamの助けを借りて、次のように実装しました。

クラス宣言で、次のように定義することを検討しています。

データを送信する必要があるため、ポインターを逆参照して、ポインターが指すデータを送信しています。

これはこれを行う正しい方法ですか?

この方法で送信すると、受信側でオブジェクトを再作成する方法がわかりません。私は考えています:

intポインターの場合、 を作成して、new int着信値をそれに割り当てることができます。しかし、 型のポインターはBaseどうでしょうか? Derived1タイプかどうかはわかりませんDerived2

どうすればこれを処理できますか?

ここに解決策がない場合、クラスオブジェクトを送信する他の方法はありますか?

ありがとうございました。

0 投票する
1 に答える
445 参照

c++ - シェイプをシリアル化して保存して再描画する

QPainterPath を描画している QGraphicsScene があり、形状を保存して、アプリの再実行時に再描画できるようにする必要があります。形状、簡略化されたバージョン、および書き込み方法を描画する方法は次のとおりです。

現在、私のファイルは実行時に書き込まれることはありません。

しかし、それを超えて、形状を再構築できるようにこのデータをシリアル化する正しい方法はありますか?

描き直しはできると思っていたのですが、連載がよくわかりません。

ポイントをシリアル化しますか?ポイントを含むリスト?

ポイントをシリアル化し、逆シリアル化すると、それらをリストに追加すると、リスト内の各ポイントの位置に基づいて形状を再作成できるはずです。つまり、位置 0 のポイントは p1、1 のポイントは p2 などになります。しかし、ファイルに何も書き込まれていないため、ここまで到達できません。さらに、そもそもデータのシリアル化から何を期待できるのか完全にはわかりません。

これに関するヘルプは素晴らしいでしょう。

編集:フィードバックに基づいて、私は今、私の書き込み方法でこれを試みています

これは正常にコンパイルされますが、私がそれを正しく行っているかどうかは完全にはわかりませんが、ファイルには何も書き込まれていないため、まだどこかでオフになっていると思います。