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

hrr*_*hrr 20 user-interface serialization qt protocol-buffers

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

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

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

hrr*_*hrr 10

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

截图protobufeditor


Sea*_*ean 7

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

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


fej*_*ejd 5

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

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

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


Dan*_*Liu 5

希望这个应用能帮到你 [仅适用于 macOS]

https://apps.apple.com/ca/app/protobuf-viewer/id1165908879?mt=12

在此处输入图片说明