2011-12-04 279 views
1

我需要添加一個「懸停效果」QPixmaps添加到QGraphicsScene。當用戶將鼠標懸停在它上面時,我想通過填充半透明白色來「突出顯示」我的QPixmap。如果可能的話,我想避免使用setPixmap(QPixmap)方法來將我的像素圖與預先製作的「懸停圖像」交換。 這是我到目前爲止有:QPixmap懸停效果?

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))); 

在像素圖頂部創建透明的白色矩形。

(對不起,如果我的Java不好,我正在適應我從PyQt風格知道)。

+0

非常感謝!通過對代碼進行微小的修改,實現就可以實現:d – Benjamin