Qt Grid with QgraphicsItems drag and drop
所以我目前正在制作一个拼字游戏
我有一个 QGraphicsScene,上面有一个网格。网格由包含变量的自定义 QGraphicsItems 瓦片组成。
现在我还有另一个自定义 QGraphicsItem,它们是应该放置在图块上的字符(其他 QGraphicsItems 也是如此)。如何让用户通过某种拖放机制将字符放在图块上?
提前致谢
假设用户正在使用鼠标移动角色,当他们在拖动角色后释放鼠标时,搜索最近的网格项目位置,然后将磁贴动画到该位置,可能使用 QGraphicsItemAnimation。
- 那个搜索功能应该是场景的一部分?
-
这取决于类层次结构的整体设计。理想情况下,我会尽量保持 QGraphicsScene 和 QGraphicsView 尽可能干净,并将其用作用户输入和其他类之间的接口,但您可以将其作为场景的函数,因为它实际上是基于项目的辅助函数在场景中。
-
您实际上并不需要"搜索"最近的网格项,只需使用鼠标位置(释放鼠标按钮时)作为参数调用 QGraphicsView::itemAt(const QPoint&) ,它将返回网格项。
-
同样, itemAt 在该点搜索最近的项目。这就像说您不需要打印文本,只需调用 printf!
-
如果您阅读 Cédric 的第一条评论,他似乎不知道 itemAt 函数的存在,这就是为什么认为提及它是个好主意。在您的评论中,您似乎还建议他应该实现搜索功能,而不是使用已有的功能。
-
@DanielHedberg 当我写它时,这不是我的想法,但如果这就是你解释它的方式,那就足够公平了。