QGraphicsView自动放置物品

gru*_*czy 3 python qt pyqt qgraphicsview

我想用QGraphicsView编写一个资产浏览器.它与使用QGraphicsView和QGraphicsItems的示例略有不同,因为我只想要一个滚动条,并且我希望项目在视口大小更改时自动移动.例如,当视口宽度足够大以显示4个asssets时,它们应显示如下:

aaaa
aaaa
aa
Run Code Online (Sandbox Code Playgroud)

但是当视口缩小并且连续只能包含3时,它应该显示如下:

aaa
aaa
aaa
a
Run Code Online (Sandbox Code Playgroud)

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

我曾写过一次这样的事情,但是使用QWidget和paintEvent,自己绘制所有资产并跟踪可以连续显示的资产数量.使用QGraphicsView可以更简单吗?

ere*_*der 5

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

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