Domanda

Devo aggiungere un "effetto hover" ad alcuni QPixmaps aggiunto a a QGraphicsScene. Vorrei "evidenziare" il mio QPixmap riempiendolo con un colore bianco trasparente a metà strada quando l'utente si libra su di esso. Se possibile, voglio evitare di usare il setPixmap(QPixmap) Metodo per scambiare la mia mamap con un premade "hover immagine". Questo è quello che ho finora:

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) {
    }
}

Aggiornare: A proposito, cattura gli eventi :)

È stato utile?

Soluzione

Se conosci le coordinate di Pixmap, puoi fare:

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

Per creare un rettangolo bianco trasparente sopra la mappa della pix.

(Scusa se il mio Java è cattivo, sto adattando ciò che so dallo stile Pyqt).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top