2011-12-04 13 views
1

QGraphicsSceneに追加されたQPixmapsに「ホバー効果」を追加する必要があります。私はQPixmapを "ハイライト"したいと思っています。可能であれば、setPixmap(QPixmap)メソッドを使用して、私のpixmapをpremadeの "ホバーイメージ"と交換しないようにしたいと考えています。 これは私がこれまで持っているものです: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))); 

pixmapの上に透明な白い矩形を作成します。

(私のJavaが悪い場合は申し訳ありませんが、私はPyQtスタイルから知っているものを採用しています)。

+0

ありがとう!あなたのコードを少し修正するだけで、実装はうまくいきました! :D – Benjamin