【问题标题】:Qt Grid with QgraphicsItems drag and dropQt Grid 与 QgraphicsItem 拖放
【发布时间】:2013-07-30 22:33:47
【问题描述】:

所以我现在正在做一个拼字游戏

我有一个 QGraphicsScene,上面有一个网格。网格由包含变量的自定义 QGraphicsItems 瓦片组成。

现在我还有另一个自定义 QGraphicsItem,它们是应该放置在图块上的字符(其他 QGraphicsItems 也是如此)。如何让用户通过某种拖放机制将字符放在图块上?

提前致谢

【问题讨论】:

    标签: c++ qt grid qgraphicsitem


    【解决方案1】:

    假设用户正在使用鼠标移动字符,当他们在拖动字符后释放鼠标时,搜索最近的网格项位置,然后将磁贴动画到该位置,可能使用 QGraphicsItemAnimation。

    【讨论】:

    • 那个搜索功能应该是场景的一部分?
    • 这取决于类层次结构的整体设计。理想情况下,我会尽量保持 QGraphicsScene 和 QGraphicsView 尽可能干净,并将其用作用户输入和其他类之间的接口,但您可以将其作为场景的函数,因为它实际上是基于项目的辅助函数在场景中。
    • 您实际上并不需要“搜索”最近的网格项目,只需使用鼠标位置(释放鼠标按钮时)作为参数调用QGraphicsView::itemAt(const QPoint&)将返回网格项。
    • 同样,itemAt 会在该点搜索最近的项目。这就像说你不需要打印文本,只需调用 printf !
    • 如果您阅读 Cédric 的第一条评论,他似乎不知道 itemAt 函数的存在,这就是为什么认为提及它是个好主意。在您的评论中,您似乎还建议他应该实现搜索功能,而不是使用已有的功能。
    猜你喜欢
    • 1970-01-01
    • 2013-06-17
    • 2018-10-19
    • 2017-07-17
    • 2013-07-30
    • 1970-01-01
    • 2011-07-05
    • 2018-04-15
    • 2011-04-30
    相关资源
    最近更新 更多