2009-10-08 41 views
2

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

aaaa 
aaaa 
aa 

但是当视口收缩,并且只能包含3成一排,它应该这样显示它们:

aaa 
aaa 
aaa 
a 

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

我已经写过一次这样的事情,但使用QWidget和paintEvent,自己绘制所有资产并跟踪可以在一行中显示多少资产。 QGraphicsView可以简化吗?

+0

“QGraphicsView with automatic”是一个没有太多说明问题的标题。考虑改变它... – larsmoa 2009-10-09 12:42:57

+0

谢谢,我一定忘记了完成标题。 – gruszczy 2009-10-09 15:11:59

回答

5

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

要了解您需要的布局,请查看Qt的流布局示例。转换这个例子会给你一个QGraphicsFlowLayout。将你的QGraphicsItems添加到这个布局中,并将你的QGraphicsView的布局设置为该布局,那就可以做到这一点。

+0

我一定会看看这个。感谢:-)不知道,我可以使用QGraphicsItems QGraphicsView的布局。 – gruszczy 2009-10-08 15:50:44

0

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

1

这听起来你想要一个列表,而不是图形视图。列表可以设置为显示你想要的东西。请参阅puzzle example,注意左侧的拼图列表。为提出的案例设置起来非常简单。

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