Domanda

Sono un nuovo programmatore Java / Qt e sto cercando di costruire una GUI usando Java e QT Jambi.

Metto un pixmap all'interno di un'etichetta e funziona bene, ma ora ho bisogno di ottenere le coordinate dell'immagine quando faccio clic sul pixmap all'interno dell'etichetta.Non ho bisogno delle coordinate QWidget.Ho solo bisogno delle coordinate PixMap per lavorare sull'immagine sul punto cliccato.

Penso che dovrei sovrascrivere l'evento Mousepresspressurevent , ma non so come collegarlo a "PixMap onClick".

Puoi per favore farmi un esempio facile?

Spero di aver spiegato il mio problema nel modo giusto, il mio inglese non è fantastico, mi dispiace!

È stato utile?

Soluzione

.

Penso che dovrei scavalcare l'evento del mousesspressurevent, ma non so come collegarlo a "Pixmap onClick".

Sembri confondere eventi e segnali insieme. Il primo è un qevent, il secondo è un segnale. Quello di cui hai bisogno è il primo, e non hai bisogno di quest'ultimo.

Avresti bisogno di sottoclasse la classe Qlabel e scrivere qualcosa del genere quando scrivendo C ++ (non QT Jambi in Java, ma puoi prenderlo come Pseudo-Code in entrambi i modi).

#include <QLabel>
#include <QPoint>
#include <QMouseEvent>

class MyLabel : public QLabel
{
    Q_OBJECT
    public:
        MyLabel(QObject *parent) : QLabel(parent)

     ...

     protected:
         void QWidget::mousePressEvent(QMouseEvent * event)
         {
             ...
             QPoint localPosition = event.pos();
             // Work on the desired point
             ...
         }
};
.

Quindi, a seconda del caso dell'uso, è necessario esaminare la documentazione di questi metodi:

.

Void Qwidget :: MousePressevent (QMouseEvent * Evento) [Protetto virtuale]

Questo gestore di eventi, per evento evento, può essere reimplementato in una sottoclasse per ricevere eventi premere il mouse per il widget.

Se crei nuovi widget nel mouse di mousepressurevent () il mouseleeaseevent () potrebbe non finire dove ti aspetti, a seconda del sistema di finestre sottostanti (o del gestore di finestre X11), la posizione dei widget e forse di più.

L'implementazione predefinita implementa la chiusura dei widget popup quando si fa clic all'esterno della finestra. Per altri tipi di widget non fa nulla.

E poi questo è il metodo per ottenere la posizione locale che funziona anche con Qt 4. Potresti voler considerare la località di localizzazione () o altri metodi introdotti in QT 5 se hai bisogno di più precisione con galleggiante, ecc.

.

qpoint Qmouseevent :: pos () cost .

Restituisce la posizione del cursore del mouse, relativo al widget che ha ricevuto l'evento.

Se si sposta il widget come risultato dell'evento del mouse, utilizzare la posizione globale restituita da GlobalPos () per evitare un movimento di agitazione.

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