私のデータは XML ファイルから読み込まれ、確かに階層化されています。Qt のモデル/ビュー フレームワークで動作するようにデータを適応させることは、簡単なことのようです。ただし、XML ノードは数値や文字列などのプリミティブ オブジェクトではありません。Simple Widget Mapper exampleと同様のデータを表示するのが好きです。いくつかのラベル、テキスト フィールド、ボタン、またはチェック ボックスを含むフォームがあります。さらに、階層ビュー内の項目を選択 (チェック ボックスのチェックなど)、削除 (閉じるボタン)、編集 (編集ボタン)、ドラッグ アンド ドロップすることができます。ドラッグ アンド ドロップを使用して、階層を操作 (挿入、移動、コピー) します。ベストプラクティスは何ですか?
これまでのところ、次の 3 つのオプションが表示されます。
ネストされたウィジェットで QDataWidgetMapper を使用します。
XML ノードの属性は、1 行にリストされます。ノードごとに、QDataWidgetMapper がその行に関連付けられています。QDataWidgetMapper は、ウィジェット フィールドを適切なノード値と同期します。すべてのイベント、ドラッグ アンド ドロップ、選択などは、ウィジェットで処理する必要があります。ウィジェットはドロップ コンテナーを提供します。ネストされたウィジェットは、データ階層を表します。
カスタム QAbstractItemView を実装し、デリゲートを使用します。
ナッシ・シュナイダーマン図のようなものを目指しています。したがって、標準の QTreeView は適用できません。ただし、QAbstractItemView を継承する基本的な階層レイアウトを作成することは可能です。カスタム デリゲートを使用して、フォーム ウィジェットで XML データを描画し、エディターを作成します。QAbstractItemView は、ドラッグ、ドロップ、選択モデルの管理、(どういうわけか) ボタン イベントをリッスンして階層からアイテムを削除し、デリゲートにエディターを要求する役割を果たします。
他の何か:
私は Qt の第一人者ではありません。提案を歓迎します。
どのオプションが推奨されますか? 痛みが少ないと思うオプションはどれですか?
編集 - 2 月 21 日: Qt Designer がどのように実装されているか知っている人はいますか? これはかなり、私が探しているものです。Qt Designer と同様に、要素 (ループ、条件、アクションなど) があり、階層プロセスを編集するのが好きです。一部の要素はコンテナであり、その他はリーフです。いくつかの要素は水平に構成され、他の要素は垂直に構成されています。Qt Designer は QGraphicsScene ですか?
あなたの助けと提案に感謝します, マリアン