我想使用QGraphicsView编写资产浏览器。它与使用QGraphicsView和QGraphicsItems的示例略有不同,因为我只想要一个滚动条,并且我希望项目在视口大小更改时自动移动。例如,当视口宽度足够大以显示4个asssets时,它们应显示如下:
aaaa
aaaa
aa
但是当视口缩小并且连续只能包含3时,它应该像这样显示:
aaa
aaa
aaa
a
我不想自己移动这些资产,让图形视图管理它们。这有可能吗?
我曾写过一次这样的事情,但是使用QWidget和paintEvent,自己绘制所有资产并跟踪可以连续显示的资产数量。使用QGraphicsView可以更简单吗?
答案 0 :(得分:5)
QGraphicsView支持布局。你要做的是实现你自己的布局管理器,继承自QGraphicsLayout。
对于您需要的布局,请查看Qt的Flow Layout示例。转换该示例将为您提供QGraphicsFlowLayout。将QGraphicsItems添加到此布局并将QGraphicsView的布局设置为该布局,这样就可以了。
答案 1 :(得分:1)
听起来我想要一个列表,而不是图形视图。可以设置一个列表来显示您想要的东西。请参阅puzzle example,注意左侧的拼图列表。设置案例看起来非常简单。
当然,如果你真的想在图形视图中使用它,我想你可以在视图中添加一个列表并在那里使用它。
答案 2 :(得分:0)
我会使用自定义布局来执行此操作。尝试创建继承自QGraphicsLayout的自定义Layout类,并管理它放置项目的方式。