带有自动项目放置的QGraphicsView
我想用QGraphicsView编写一个资产浏览器。这与使用QGraphicsView和QGraphicsItems的例子有点不同,因为我只想要一个滚动条,并且希望项目在视口大小改变时自动移动。例如,当视口宽度足够大,以显示4个asssets,它们应显示这样的:带有自动项目放置的QGraphicsView
aaaa
aaaa
aa
但是当视口收缩,并且只能包含3成一排,它应该这样显示它们:
aaa
aaa
aaa
a
我不想让自己移动这些资产,让图形视图管理它们。它有可能吗?
我已经写过一次这样的事情,但使用QWidget和paintEvent,自己绘制所有资产并跟踪可以在一行中显示多少资产。 QGraphicsView可以简化吗?
QGraphicsView支持布局。你必须做的是实现你自己的布局管理器,从QGraphicsLayout继承。
要了解您需要的布局,请查看Qt的流布局示例。转换这个例子会给你一个QGraphicsFlowLayout。将你的QGraphicsItems添加到这个布局中,并将你的QGraphicsView的布局设置为该布局,那就可以做到这一点。
我一定会看看这个。感谢:-)不知道,我可以使用QGraphicsItems QGraphicsView的布局。 – gruszczy 2009-10-08 15:50:44
我会使用自定义布局来做到这一点。尝试创建从QGraphicsLayout继承的自定义布局类,并管理其放置项目的方式。
这听起来你想要一个列表,而不是图形视图。列表可以设置为显示你想要的东西。请参阅puzzle example,注意左侧的拼图列表。为提出的案例设置起来非常简单。
当然,如果你真的想要它在图形视图中,我想你可以添加一个列表到视图并在那里使用它。
“QGraphicsView with automatic”是一个没有太多说明问题的标题。考虑改变它... – larsmoa 2009-10-09 12:42:57
谢谢,我一定忘记了完成标题。 – gruszczy 2009-10-09 15:11:59