如何可视化来自谷歌协议缓冲区的数据?

时间:2011-05-17 14:14:55

标签: qt user-interface serialization protocol-buffers

我想使用谷歌协议缓冲区存储数据(另一种序列化格式也可以使用),然后有一个用于浏览该数据的UI。是否有允许我这样做的C ++框架/ API?

例如,它可以使用protobuf的反射接口,然后将数据填入Qt的QTableView(或其他工具包)。我可以自己编写这样的代码 - 但是,我更愿意重用现有的代码,这就是我在这里寻求建议的原因!

或者是否有更多通用的UI工具包可以显示可通过某些反射API访问的数据?

8 个答案:

答案 0 :(得分:9)

我刚遇到的一个GUI是protobufeditor - 它似乎非常适合浏览通用数据。它是用Java编写的,因此不能轻易地从C ++中使用/扩展它。 (此时它并没有特别抛光,例如,需要最大化主窗口以获得子窗口的半有用布局。)所以这是一个相当临时的解决方案。

Screenshot protobufeditor

答案 1 :(得分:6)

Wireshark有一个protobuf插件,可让您直观显示protobuf消息的内容。我还要深入研究google / protobuf / message.h或者message_lite.h中的DebugString()(我忘记了它的顶部),看看你是否可以轻松地将它装扮成用户演示。< / p>

http://code.google.com/p/protobuf-wireshark/

答案 2 :(得分:4)

如果您想自己编写,可以选择将Python / PySide与QML一起使用,处理您的数据并将其存储在连接到QML ListView的QAbstractListModel中。根据数据的复杂程度,列表视图委托应该能够将其可视化。

在这种情况下,这个问题可能有用: How to provide data from PySide QAbstractItemModel subclass to QML ListView?

如果XML是一个选项,QML XmlListModel非常简洁易用。

答案 3 :(得分:2)

我去年使用Qt正在研究这样的解决方案。不幸的是,该应用程序还没有完成,但我认为我可以或多或少成功地从通用协议缓冲流中可视化数据。您可以在

查看代码

https://github.com/oneamtu/QProtoViewer

同样,这不是一个开箱即用的解决方案,您必须努力使其适合您自己的需求/项目。如果您选择这样做,我会非常乐意提供帮助。

答案 4 :(得分:2)

答案 5 :(得分:1)

一个选项是Protocol Buffer Workbench。这个工具的一个很好的功能是你可以使用它轻松地将JSON转换为编码的协议缓冲区,反之亦然。

答案 6 :(得分:0)

如果您愿意,可以使用web ui撰写protobuf消息

https://github.com/Groterik/protobuf-webui

它是python项目,它有一个样本,执行http服务器组成导入的protobuf模块所需的消息类型。但它是python,所以你可以编写简单的解决方法,动态导入编译的protobuf模块并在运行时选择消息类型。

您可以重载后处理方法,以便它可以对消息(存储到文件,通过网络发送等)执行一些有用的工作

答案 7 :(得分:0)

要解决没有架构的二进制表示很难。 但是,如果你想更好地了解pb的文本格式或DebugString(),你可以试试Protobuf Visualizer:

http://codingstory.com/pv