Googleプロトコルバッファを使用してデータを保存し(別のシリアル化された形式でも機能します)、そのデータを参照するためのUIが必要です。これを可能にするC++フレームワーク/ APIはありますか?
たとえば、protobufのリフレクションインターフェイスを使用して、QtのQTableViewに(または別のツールキットから)データを入力することができます。そのようなコードを自分で書くこともできますが、むしろ既存のコードを再利用したいので、ここでアドバイスを求めています。
または、リフレクションAPIを介してアクセスできるデータを視覚化できるより一般的なUIツールキットはありますか?
私が今出会ったGUIの1つは protobufeditor -一般的なデータを閲覧するにはかなり強力なようです。 Javaで書かれているため、C++から簡単に使用/拡張することはできません。 (そして、この時点では特に洗練されていません。たとえば、サブウィンドウの半有用なレイアウトを取得するには、メインウィンドウを最大化する必要があります。)したがって、これはかなり一時的な解決策です。
Wiresharkには、protobufメッセージの内容を視覚化できるprotobufプラグインがあります。また、google/protobuf/message.hまたはmessage_lite.h(頭のてっぺんからどちらを忘れているか)のDebugString()を調べて、ユーザーに提示するために簡単にドレスアップできるかどうかを確認します。
自分で記述したい場合は、Python/PySideをQMLと一緒に使用し、データを処理して、QMLListViewに接続されているQAbstractListModelに保存することもできます。データの複雑さに応じて、リストビューデリゲートはデータを視覚化できるはずです。
この質問はその場合に役立つかもしれません: PySideQAbstractItemModelサブクラスからQMLListViewにデータを提供する方法は?
XMLがオプションの場合、QMLXmlListModelは非常にすっきりと使いやすいです。
私は昨年、Qtを使用してそのようなソリューションに取り組んでいました。残念ながら、アプリケーションはまだ完成していませんが、汎用プロトコルバッファストリームからのデータを多かれ少なかれうまく視覚化できる段階にあったと思います。あなたはでコードをチェックアウトすることができます
https://github.com/oneamtu/QProtoViewer
繰り返しになりますが、これはすぐに使用できるソリューションではなく、自分のニーズやプロジェクトに合うように作業する必要があります。あなたがそうすることを選択した場合、私は喜んでお手伝いします。
1つのオプションは Protocol Buffer Workbench です。このツールの優れた機能は、JSONをエンコードされたプロトコルバッファに簡単に変換したり、その逆に変換したりできることです。
必要に応じて、WebUIを使用してprotobufメッセージを作成できます
https://github.com/Groterik/protobuf-webui
pythonプロジェクトであり、インポートされたprotobufモジュールの目的のメッセージタイプを構成するhttpサーバーを実行するサンプルがあります。ただし、Pythonなので、コンパイルされたprotobufモジュールを動的にインポートして選択する簡単な回避策を記述できます。実行時のメッセージタイプ。
後処理メソッドをオーバーロードして、メッセージを処理するのに役立つようにすることができます(ファイルへの保存、ネットワークによる送信など)。
スキーマなしでバイナリ表現を解決するのは困難です。ただし、pbのテキスト形式またはDebugString()をより適切に表示したい場合は、ProtobufVisualizerを試すことができます。