3

我想使用 QGraphicsView 编写一个资产浏览器。它与使用 QGraphicsView 和 QGraphicsItems 的示例有点不同,因为我只想要一个滚动条,并且我希望项目在视口大小发生变化时自动移动。例如,当视口宽度大到足以显示 4 个资源时,它们应该显示如下:

aaaa
aaaa
aa

但是当视口缩小并且只能连续包含 3 个时,它应该像这样显示它们:

aaa
aaa
aaa
a

我不想自己移动这些资产并让图形视图管理它们。有可能吗?

我曾经写过这样的东西,但是使用QWidget和paintEvent,自己绘制所有资产并跟踪可以连续显示多少资产。使用 QGraphicsView 可以更简单吗?

4

3 回答 3

5

QGraphicsView 支持布局。你要做的是实现你自己的布局管理器,继承自 QGraphicsLayout。

对于您需要的布局,请查看 Qt 的 Flow Layout 示例。转换该示例将为您提供 QGraphicsFlowLayout。将您的 QGraphicsItems 添加到此布局并将您的 QGraphicsView 的布局设置为该布局,这样就可以了。

于 2009-10-08T15:06:32.047 回答
1

听起来你想要一个列表,而不是图形视图。可以设置一个列表来显示你想要的东西。查看拼图示例,注意左边的拼图列表。为呈现的案例设置看起来非常简单。

当然,如果你真的想在图形视图中使用它,我想你可以在视图中添加一个列表并在那里使用它。

于 2009-10-08T16:23:17.227 回答
-1

我会使用自定义布局来做到这一点。尝试创建继承自 QGraphicsLayout 的自定义 Layout 类并管理它放置项目的方式。

于 2009-10-08T15:10:41.427 回答