3

QGraphicsViewを使用してアセットブラウザを作成したいと思います。QGraphicsViewとQGraphicsItemsを使用した例とは少し異なります。これは、スクロールバーを1つだけにし、ビューポートのサイズが変更されたときにアイテムを自動的に移動するためです。たとえば、ビューポートの幅が4つのアセットを表示するのに十分な大きさの場合、次のように表示する必要があります。

aaaa
aaaa
aa

ただし、ビューポートが縮小され、連続して3つしか含めることができない場合は、次のように表示されます。

aaa
aaa
aaa
a

それらのアセットを自分で移動して、グラフィックスビューにすべてを管理させる必要はありません。どういうわけか可能ですか?

私は一度そのようなことを書いたことがありますが、QWidgetとpaintEventを使用して、すべてのアセットを自分で描画し、連続して表示できるアセットの数を追跡します。QGraphicsViewを使用して簡単に実行できますか?

4

3 に答える 3

5

QGraphicsViewはレイアウトをサポートしています。あなたがしなければならないことは、QGraphicsLayoutから継承して、あなた自身のレイアウトマネージャーを実装することです。

必要なレイアウトについては、Qtのフローレイアウトの例をご覧ください。その例を変換すると、QGraphicsFlowLayoutが得られます。QGraphicsItemsをこのレイアウトに追加し、QGraphicsViewのレイアウトをそのレイアウトに設定すると、うまくいきます。

于 2009-10-08T15:06:32.047 に答える
1

グラフィックビューではなく、リストが必要なようです。リストを設定して、必要に応じてラップアラウンドするものを表示できます。左側のパズルのピースのリストに注意して、パズルの例を参照してください。提示されたケースの設定は非常に簡単に見えます。

もちろん、グラフィックビューで本当に必要な場合は、ビューにリストを追加してそこで使用できると思います。

于 2009-10-08T16:23:17.227 に答える
-1

これを行うには、カスタムレイアウトを使用します。QGraphicsLayoutから継承するカスタムレイアウトクラスを作成し、アイテムの配置方法を管理してみてください。

于 2009-10-08T15:10:41.427 に答える