Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 如何从google协议缓冲区可视化数据?_Qt_User Interface_Serialization_Protocol Buffers - Fatal编程技术网

Qt 如何从google协议缓冲区可视化数据?

Qt 如何从google协议缓冲区可视化数据?,qt,user-interface,serialization,protocol-buffers,Qt,User Interface,Serialization,Protocol Buffers,我希望使用google协议缓冲区存储数据(另一种序列化格式也可以),然后使用UI浏览数据。是否有一个C++框架/ API允许我这样做? 例如,它可以使用protobuf的反射接口,然后将数据填充到Qt的QTableView中(或从另一个工具包中)。我可以自己编写这样的代码——不过,我更愿意重用现有代码,这就是我在这里征求建议的原因 或者有更多的通用UI工具包可以可视化通过反射API访问的数据吗?如果您想自己编写,一个选项可以是将Python/PySide与QML一起使用,处理数据并将其存储在连接

我希望使用google协议缓冲区存储数据(另一种序列化格式也可以),然后使用UI浏览数据。是否有一个C++框架/ API允许我这样做? 例如,它可以使用protobuf的反射接口,然后将数据填充到Qt的QTableView中(或从另一个工具包中)。我可以自己编写这样的代码——不过,我更愿意重用现有代码,这就是我在这里征求建议的原因


或者有更多的通用UI工具包可以可视化通过反射API访问的数据吗?

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

在这种情况下,这个问题可能有用:


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

Wireshark有一个protobuf插件,可以让您可视化protobuf消息的内容。我还将深入研究google/protobuf/message.h或message_lite.h中的DebugString()(我忘了是哪个了),看看您是否可以轻松地将其打扮起来,以便向用户演示


我刚刚遇到的一个GUI是——它对于浏览通用数据似乎非常强大。它是用java编写的,所以不能轻易地使用C++。(在这一点上没有特别的修饰,例如,需要最大化主窗口以获得子窗口的半有用布局。)因此这是一个相当临时的解决方案


去年我使用Qt开发了这样一个解决方案。不幸的是,应用程序还没有完成,但我想我已经到了可以或多或少成功地可视化来自通用协议缓冲流的数据的地步。您可以在以下位置查看代码:


同样,这不是现成的解决方案,您必须努力使其适合您自己的需求/项目。如果您愿意,我将非常乐意为您提供帮助。

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

这是一个python项目,它有一个执行http服务器的示例,该服务器构成导入的protobuf模块所需的消息类型。但它是python,所以您可以编写简单的变通方法,动态导入已编译的protobuf模块,并在运行时选择消息类型


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

在没有模式的情况下解析二进制表示是困难的。 但是,如果您只是想更好地查看pb的文本格式或DebugString(),可以尝试Protobuf Visualizer:


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

希望此应用程序能够帮助您[仅适用于macOS]


我只是想提出这个建议。PySide或PyQt都可以工作。不确定是否有任何理由选择其中一个。感谢您向相关的Qt类指出!绕过Python并不需要,我可能只是从C++中使用,不是吗?是的,你可以用C++来代替它,这可能是更好的选择,因为即使PySead非常成熟,你可能仍然会遇到奇怪的问题。如果你只有PROTO文件,你可能需要将Prime.EXE添加到你的路径中。这个应用程序的名称是什么?iTunes上还有吗?@hsalimi嘿,你可以用“protobuf viewer”搜索mac App Store!这个应用程序帮我节省了几个小时的工作时间,谢谢!更新链接: