2012-04-24 21 views
0

QGraphicsViewウィジェットから動的に生成された画像のコレクションがあります。 。そのために、私は、カスタムウィジェット内のグリッドのいくつかの種類で利用可能な画像を表示していましたし、ユーザーは、彼らが興味を持っているいずれかをクリックしている複数のグラフィック表示の中から表示したり選択するカスタムウィジェット

複数の質問が生じ:

  • は、既存のウィジェットがありますこの目的に合っていますか?
  • 私はQGraphicsViewアイテムによるすべてのマウスイベント処理を無効にする方法を見つけるべきですか、またはそれらを傍受するグラフィックビューの前にトランスペアレントウィジェットを追加できますか?
  • 多くのQGraphicsViewウィジェット(数百まで)を表示するとパフォーマンス上の問題がありますか?最初にそれらを普通のイメージにエクスポートする必要がありますか?

答えて

1

最初にオフになっていますが、その目的のために特別に設計されたウィジェットはありません。

私はあなたがQGraphicsViewが何であるか把握しているとは思いません。多くのQGraphicsItemを保持するためのQGraphicsSceneを表示するためのものです。あなたの投稿に基づいて、なぜQGraphicsViewを複数必要とするのか分かりません。 1つのQGraphicsViewを持つだけで、そのシーンの中に多くの画像を表示することができます。たとえば、QGraphicsPixmapItemを参照してください。

何百ものQGraphicsViewがあるはずはありません。 QGraphicsSceneに多くのQGraphicsItemを表示することができます。一度に何百ものQGraphicsItemを見ることができます。あなたの場合は、おそらくQGraphicsPixmapItemsが必要です。これは、QGraphicsItemのサブクラスです。複数のQGraphicsScenesを持っていても、QGraphicsView::setSceneを使って関連性の高いものを表示することができます。ユーザーがグリッドから画像を選択してその画像で作業できるようにするには、State Patternを探します。

QGraphicsViews、QGraphicsScenes、またはQGraphicsItemsでマウス操作を無効にする理由は考えられません。なぜこれらは自分のマウスイベントを処理しないのですか?それらをサブクラス化して(必要に応じて)、mousePressEventmouseMoveEventmouseReleaseイベントなどを再実装して、必要な機能を得ることができます。

幸運を祈る!

関連する問題