2011-12-04 3 views
1

QGraphicsScene에 일부 QPixmaps에 "호버 효과"를 추가해야합니다. 사용자가 마우스를 가져 가면 반투명 한 흰색 색으로 채워서 내 QPixmap을 "강조 표시"하고 싶습니다. 모든 가능한 경우 나는 setPixmap(QPixmap) 메서드를 사용하여 내 픽스맵을 미리 만든 "마우스 오버 이미지"와 교환하지 않으려합니다.Q 픽스맵 호버 효과?

import com.trolltech.qt.gui.QGraphicsPixmapItem; 
import com.trolltech.qt.gui.QGraphicsSceneHoverEvent; 
import com.trolltech.qt.gui.QPixmap; 

public class SelectablePixmapItem extends QGraphicsPixmapItem { 

    private QPixmap pixmap; 

    public SelectablePixmapItem(QPixmap pixmap) { 
     super(pixmap); 
     setAcceptHoverEvents(true); 
     setItemPixmap(pixmap); 
    } 

    private void setItemPixmap(QPixmap pixmap) { 
     this.pixmap = pixmap; 
    } 

    @Override 
    public void hoverEnterEvent(QGraphicsSceneHoverEvent e) { 
    } 

    @Override 
    public void hoverLeaveEvent(QGraphicsSceneHoverEvent e) { 
    } 
} 

업데이트 : 이것은 내가 지금까지있어 무엇는 방법 : 당신이 픽스맵의 좌표를 알고있는 경우

+0

귀하의 Qt Jambi 버전에 [QGraphicsEffects] (http://doc.qt.nokia.com/latest/qgraphicseffect.html)가 있습니까? – Mat

+0

예. 그것은 ......... 많은 점들을 유감스럽게 생각합니다. 단어 최소값 : – Benjamin

+0

왜 이미지 위에 투명 사각형 (예 :'QColor (255, 255, 255, 128)')을 그려야합니까? QGraphicsEffects보다 빠를 것입니다. –

답변

1

, 당신이 할 수있는하여 이벤트를 캡처 않습니다

graphicsscene.addRect(pixmap.rect(), 
         new QPen(), 
         new QBrush(new QColor(255, 255, 255, 128))); 

pixmap 위에 투명한 흰색 직사각형을 만듭니다.

(Java가 좋지 않다면 죄송합니다. PyQt 스타일에서 내가 아는 부분을 수정하고 있습니다.)

+0

정말 고마워요! 코드를 약간 수정하여 구현이 효과가있었습니다! :디 – Benjamin