gpt4 book ai didi

c++ - QGraphicsScene 和 QGraphicsWidget(可重复使用和嵌入)

转载 作者:行者123 更新时间:2023-11-28 03:50:52 31 4
gpt4 key购买 nike

首先我应该说我已经尝试从所有 POV 来看这个问题。我也在 freenode 上询问过,有人向我提出了一些建议,但最终证明这些建议不可能奏效。

在我看来,那些提出建议的人似乎并不真正了解类层次结构和概念层次结构。

话虽如此,我已经多年没有使用 Qt,所以请多多包涵。

我想做的是一个图形项目(QGraphicsWidget,...Item,无论如何,我不知道它应该从哪个类继承),它可以坐在场景 QGraphicsScene 上。

假设您想为基于网格的游戏创建一个可重复使用的组件,例如 battleship .

此小部件中的新对象(如战舰)可以表示为位矩阵并即时创建/插入。

其中的构建 block 本身(填充的 QGraphicsRectItem 或“空”的)应由布局类管理。默认情况下可以为 QGraphicsGridLayout 提供服务,但它应该允许插入自定义布局。这将允许新的 2D 布局,例如等距布局。

在小部件内有一个布局也将简化在此小部件之上的游戏开发,因为您将有方法 itemAt() 和层来组织“网格”上的对象。

请记住,小部件本身可以位于场景中。

那么哪些概念(grid widget、grid block、grid layout)应该继承自哪些qt4(4.7.2)类?

注意:已经退出的类/框架/任何东西都可以,但请记住,我不想为 Windows 用户分发超过 3-4 Mb 的库。

最佳答案

根据您的描述,我建议将三个基本概念实现为:

1) “网格”小部件继承自 QGraphicsWidget,因为它支持添加布局。如果你同意 QGraphicsItem,你将需要重新实现布局机制,这真的很痛苦。网格根据“网格”布局提供的“网格”形状创建“网格” block 。

2) “网格”布局继承自QGraphicsLayout。您应该几乎可以直接使用 QGraphicsGridLayout 来制作简单的方形网格游戏。您将不得不创建新的子类来处理其他类型的网格形状。您在本类(class)中应该具备的一个显着特征是网格 block 形状的定义(正方形、六边形、菱形)。此作为 QPolygon 给出的定义可用于创建形状正确的网格 block 。

3) “网格” block 继承自QGraphicsPolygonItem QGraphicsLayoutItem。这是将网格项定义为多边形的更通用方法。你可以有矩形、菱形、六边形等。如果你想让你的网格对象以方形网格的方式排列(例如参见 Sane 游戏),你可以创建一个特殊的“网格” block 项目包含(作为子项)QGraphicsEllipseItem

关于c++ - QGraphicsScene 和 QGraphicsWidget(可重复使用和嵌入),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5536947/

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