【发布时间】:2010-01-26 22:46:08
【问题描述】:
我有一个继承 QAbstractTableModel 的类,并在 QMap 中保存一些复杂的结构。 QVariant data(QModelIndex index, ...) 方法只返回一个枚举,它描述了自定义项委托应如何绘制单元格的内容。我想在这个模型中实现拖放功能,以便用户可以在 QMap 中重新排序这些结构,但不能完全理解 Qt 希望我如何做到这一点。我只需要查看拖放操作的源索引和目标索引,其余的我可以处理,但我在 QAbstractItemModel 中找到的最接近的是dropMimeData() 函数。 DropMimeData() 没有给我源索引,并要求我将数据转换为某种 MIME 类型(明文等),但绝对不是。我可以通过创建一个只包含源索引的 QMimeData 来解决这个问题,但我想真正学习使用 Qt,因为它应该被使用,我觉得我错过了一些东西。有什么想法吗?
只是为了澄清一点,该应用程序是一个动画程序,其行为类似于 Adobe Flash。继承 QAbstractTableModel 的类有一个QMap<int, FrameState>(和struct FrameState{QPointF pos; bool visible;})来保存关键帧。这个 QMap 的这种状态是我想要显示并让用户编辑的状态。如果有可见关键帧,我画一个绿色圆圈,如果有一个不可见关键帧,我画一个红色圆圈,如果前一个关键帧可见,我画一条线,如果前一个关键帧不可见,我什么也不画。我希望用户能够拖动关键帧来更改他们的 QMap 键。
谢谢!
【问题讨论】:
标签: user-interface qt qt4