Python QGraphicsView,可自动放置项目

Python QGraphicsView,可自动放置项目,python,qt,pyqt,qgraphicsview,Python,Qt,Pyqt,Qgraphicsview,我想使用QGraphicsView编写一个资产浏览器。它与使用QGraphicsView和QGraphicsSitems的示例略有不同,因为我只需要一个滚动条,并且我希望在视口大小更改时项目自动移动。例如,当视口宽度足够大以显示4个assset时,它们应如下所示: aaaa aaaa aa aaa aaa aaa a 但当视口缩小且一行只能包含3个视口时,应按如下方式显示它们: aaaa aaaa aa aaa aaa aaa a 我不想自己移动这些资产,让图形视图来管理它们。这有可能吗

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

aaaa
aaaa
aa
aaa
aaa
aaa
a
但当视口缩小且一行只能包含3个视口时,应按如下方式显示它们:

aaaa
aaaa
aa
aaa
aaa
aaa
a
我不想自己移动这些资产,让图形视图来管理它们。这有可能吗


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

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


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

我将使用自定义布局来完成此操作。尝试创建从QGraphicsLayout继承的自定义布局类,并管理其放置项目的方式。

我觉得您需要的是列表,而不是图形视图。可以设置一个列表来显示您想要的东西。请参见,注意左侧的拼图块列表。为所介绍的案例进行设置看起来非常简单


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

我一定会看看这个。谢谢:-)我不知道,我可以将QGraphicsView的布局与QGraphicsSitems结合使用。“QGraphicsView with automatic”是一个对这个问题没有太多说明的标题。考虑改变它…谢谢,我一定忘了完成标题了。