gpt4 book ai didi

qt - 当每一层都有不同的项目类型时编辑 QTreeView 项目

转载 作者:行者123 更新时间:2023-12-05 07:59:14 25 4
gpt4 key购买 nike

我正在做角色动画编辑器。

我的角色在这样的 QTreeView 中表示

  • > 特点
    • > 动画 0
      • 第 0 帧
      • 第 1 帧
      • 第 2 帧
    • > 动画 1
      • 第 3 帧
      • 第 4 帧
      • 第 5 帧

等等

CharacterAnimationFrame 继承了一个基本的抽象Item 类。

限制是:

  • Character 项目可以有任意数量的 ONLY Animation 项目
  • Animations 项目可以有任意数量的 ONLY Frame 项目
  • Frame 项目不能有任何 child

现在,所有继承自 Item 的东西都有一个名字。然后每种类型的项目添加自己的属性(Animation 可以有 Wrap 模式,FPS;Frame 可以有持续时间)。

所以树的每一层都有不同的数据集。

现在我想添加另一个小部件,允许编辑每个 Item 的数据。该小部件将分为 3 个部分(部分):与角色相关的数据、与动画相关的数据和与帧相关的数据。当用户在树中选择一个项目时,小部件将根据以下规则自动填充:

  1. 如果选择的项目是Character => 只填充字符部分
  2. 如果所选项目是 Animation => 填充动画部分 + 执行步骤 1 使用此动画的父级角色
  3. 如果所选项目是 Frame => 填充框架部分 + 执行步骤 2 使用作为此框架父级的动画

我可以区分所选项目(我可以判断它是角色还是帧动画)。我可以访问所选子项的父项。

我的问题是我不知道如何在我的树模型和编辑小部件之间映射数据。我查看了 QDataWidgetMapper 但它没有帮助,它看起来适用于具有相同项目的模型,而我的模型每个级别都有不同的项目。

我可能存在重大设计缺陷,或者我根本不知道如何实现我想要实现的目标。

我需要一些指导。

附言

这是主屏幕层次结构和 3 个部分的图像 dmut hierarchy and section editing

最佳答案

总结,来自评论:

  1. 使用 QDataWidgetMapper 进行数据映射。您可以创建 3 个映射。对于每一帧。
  2. 将 QStackedWidget 用于编辑器框架
  3. 在每次选择更改时 - 设置映射并显示必要的小部件。

关于qt - 当每一层都有不同的项目类型时编辑 QTreeView 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22153199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com