将 QGraphicsView 或 Scene 转换为 XML/JSON
Turn QGraphicsView or Scene into XML/JSON
我正在寻找一种简单的方法(我认为没有(将QGraphicsView或QGraphicsScene序列化为XML或JSON。
我不知道我应该保存视图还是场景。XML或JSON很好,我只需要其中之一。我只想将场景保存在文件中以保存/加载它
我在其他网站上找到的东西很少,但它似乎很复杂,或者没有真正的功能。
首先,查看这个非常有用的教程来处理 json。其次,我想我已经读到您正在使用基于模型视图的项目?
如果是这样,则应保存所有型号信息,然后有两种可能性(取决于您的设计(。假设您已经创建了一个模型类PlayerList
并且您正在使用PlayerListLayout
或PlayerListView
(来自QVBoxLayout
的派生类(显示所有玩家。现在有两种可能性:
-
在每个视图类中,您都有对模型类的直接引用。好吧,您所需要的只是使用 getter 询问模型(这些 getter 已经存在,否则您不想可视化信息(。您不需要 json 文件,只要您先初始化模型即可。因此,对于
PlayerListLayout
,您需要做的就是询问该PlayerList
成员的每个Player*
,并致电PlayerListLayout
的所有PlayerLayout
成员PlayerLayout::read(Player* player)
。PlayerLayout
将初始化它的新玩家引用,并询问名称、首都等以可视化它。 -
在其中一个视图类中,您没有对任何模型类的引用。然后,您必须将模型或 json 文件传递给该视图类,以便您可以(再次(获取/读取信息。这是一种不太干净的方式,我不喜欢。碰巧我正在创建要阅读的大型函数;那时我发现有些事情必须改变。阅读和写作应该很容易(如果你将职责划分为多个类(。
我有一个大富翁项目,我也使用了这个序列化,教程真的很有帮助。其次,我在模型类之外(因此在视图类中(打开了.json
文件,您可能还需要考虑这一点。缺点是">当你想要重用模型类,而不是视图类"时,你必须在新 gui 中重新实现文件的打开和关闭。
但是,通过这种方式,您可以在整个代码中创建并行性,因为返回 true/false 将发生在主模型的视图类中(在我的例子中MonopolyLayout
(,因此方法Monopoly::read(...)
、Board::read(...)
的行为方式都相似。
- 在c++中使用nlohmann从类到json的转换
- Cppcheck生成xml转储文件
- C++json插入数组
- nlohmann-json将一个数组插入到另一个数组中
- 如何使用curlpp通过POST方法上传文件和json数据
- JSON转换为nlohmann JSON-lib中的结构数组
- NLOHMANN 的 JSON 库将数组转换为结构向量
- 如何在pugixml中获取节点的内部XML
- 在nlohmann json中,如何将嵌套对象的数组转换为嵌套结构的向量
- 如何使用tinyxml2从XML加载父实体和子实体
- 如何在 nlohmann 的 json 库中获取数组长度?
- boost xml parsingl将xml的路径作为变量发送
- C++RapidXml-使用first_node()遍历以修改XML文件中节点的值
- 将 QGraphicsView 或 Scene 转换为 XML/JSON
- 如何将此类序列化为XML或JSON
- XSLT 转换为 C++ 以从 XML 获取 JSON
- 用于HTTP请求的C++库-XML、JSON、CSV
- XML 到 JSON 的转换 C++
- XML vs YAML vs JSON for a 2D RPG
- 在c++中有办法把JSON转换成XML吗?