2012-04-24 2 views
0

내가 동적를 QGraphicsView 위젯을 통해 생성 된 이미지의 컬렉션이 중에서 선택하고 난 내 사용자가 그들 사이에서 선택을하고자합니다. 이를 위해, 나는 그리드의 어떤 종류의 사용자 정의 위젯 내에서 사용 가능한 이미지를 표시하고 사용자가 관심있는 하나를 클릭했을사용자 정의 위젯 표시하고 여러 그래픽 뷰

여러 문제가 발생 :.

  • 기존의 위젯이 이미 있습니다 이 목적에 부합 하는가?
  • 나는를 QGraphicsView 항목에 의해 처리하는 모든 마우스 이벤트를 비활성화 할 수있는 방법을 찾아야한다, 또는 내가 그들을 가로 챌 것입니다 그래픽 뷰의 앞에 투명 위젯을 추가 할 수 있습니다?
  • 많은 QGraphicsView 위젯 (최대 수백 개)을 표시하는 성능 문제가 있습니까? 그들을 일반 이미지로 먼저 내 보내야합니까?

답변

1

먼저 해제는, 아니, 그 목적을 위해 특별히 고안된 위젯 없다.

는 당신이를 QGraphicsView가 무엇인지 파악 생각하지 않습니다. QGraphicsScene을 표시하기위한 것입니다. QGraphicsScene은 많은 QGraphicsItem을 보유하기위한 것입니다. 귀하의 게시물을 기반으로, 나는 왜 당신이 여러 QGraphicsViews가 필요한지 알 수 없습니다. 하나의 QGraphicsView를 가지고 그 장면 안에 많은 이미지를 표시 할 수 있습니다. 예를 들어 QGraphicsPixmapItem을 참조하십시오.

수백 개의 QGraphicsView가 없어야합니다. QGraphicsScene에 많은 QGraphicsItem을 표시하는 경우 (특정 상황에서는 몇 가지를 정당화 할 수 있음) 원하는 것일 수 있습니다. 한 번에 수백 개의 QGraphicsItem을 볼 수 있습니다. 귀하의 경우에는 아마도 QGraphicsPixmapItems가 필요합니다. QGraphicsPixmapItem은 QGraphicsItem의 하위 클래스입니다. 여러 QGraphicsScenes를 가질 수도 있고 QGraphicsView::setScene을 사용하여 관련성이있는 것을 표시 할 수 있습니다. 사용자가 그리드에서 이미지를 선택한 다음 해당 이미지로 작업 할 수있게하려면 State Pattern으로보아야합니다.

나는 QGraphicsViews, QGraphicsScenes, 또는 QGraphicsItems 마우스 처리를 비활성화 할 이유 생각할 수 없다. 왜 이들은 자신의 마우스 이벤트를 처리하지 못합니까? 원하는 기능을 얻기 위해 mousePressEvent, mouseMoveEvent, mouseRelease 이벤트 등을 다시 구현할 수 있습니다 (필요한 경우).

행운을 빈다.

관련 문제