2009-10-08 38 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,注意左側的拼圖列表。爲提出的案例設置起來非常簡單。

當然,如果你真的想要它在圖形視圖中,我想你可以添加一個列表到視圖並在那裏使用它。