我想使用谷歌协议缓冲区存储数据(另一种序列化格式也可以使用),然后有一个用于浏览该数据的UI。是否有允许我这样做的C ++框架/ API?
例如,它可以使用protobuf的反射接口,然后将数据填入Qt的QTableView(或其他工具包)。我可以自己编写这样的代码 - 但是,我更愿意重用现有的代码,这就是我在这里寻求建议的原因!
或者是否有更多通用的UI工具包可以显示可通过某些反射API访问的数据?
答案 0 :(得分:9)
我刚遇到的一个GUI是protobufeditor - 它似乎非常适合浏览通用数据。它是用Java编写的,因此不能轻易地从C ++中使用/扩展它。 (此时它并没有特别抛光,例如,需要最大化主窗口以获得子窗口的半有用布局。)所以这是一个相当临时的解决方案。
答案 1 :(得分:6)
Wireshark有一个protobuf插件,可让您直观显示protobuf消息的内容。我还要深入研究google / protobuf / message.h或者message_lite.h中的DebugString()(我忘记了它的顶部),看看你是否可以轻松地将它装扮成用户演示。< / p>
答案 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)
希望这个应用程序可以帮助你[仅限macOS]
答案 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: