Pregunta

Soy un nuevo programador Java / QT y estoy tratando de construir una GUI usando Java y Qt Jambi.

Puse un PixMap dentro de una etiqueta y funciona bien, pero ahora necesito obtener las coordenadas de la imagen cuando hago clic en el PixMap dentro de la etiqueta.No necesito las coordenadas Qwidget.Solo necesito las coordenadas de PixMap para trabajar a través de la imagen en el punto clicado.

Creo que debería anular el evento mousepressevent , pero no sé cómo adjuntarlo a "pixmap onlick".

¿Puedes por favor hacerme un ejemplo fácil?

Espero haber explicado mi problema de la manera correcta, mi inglés no es increíble, lo siento!

¿Fue útil?

Solución

Creo que debería anular el evento MousePressEvent, pero no sé cómo adjuntarlo a "Pixmap OnClick".

Parece que eres confuso eventos y señales juntos. El primero es un qevent, este último es una señal. Lo que necesitas es el primero, y no necesitas este último.

Necesitaría subclase con la clase Qlabel y escribir algo así al escribir C ++ (no qt Jambi en Java, pero puede tomarlo como pseudo-código de cualquier manera).

#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
             ...
         }
};

Entonces, dependiendo de su caso de uso, deberá investigar la documentación de estos métodos:

void qwidget :: mousepressevent (evento QMouseEvent *) [Protegido virtual]

Este manejador de eventos, para eventos de eventos, se puede reemplificar en una subclase para recibir eventos de prensa de ratón para el widget.

Si crea nuevos widgets en el mousePressEvent (), el mousereleEvent () puede no terminar donde espera, dependiendo del sistema de ventanas subyacentes (o X11 Window Manager), la ubicación de los widgets y quizás más.

La implementación predeterminada implementa el cierre de los widgets emergentes cuando hace clic en la ventana. Para otros tipos de widgets no hace nada.

y luego este es el método para obtener la posición local que también funciona con QT 4. Es posible que desee considerar localpos () u otros métodos introducidos en QT 5 si necesita más precisión con flotador, etc.

QPoint QMouseEvent :: POS () Const

Devuelve la posición del cursor del mouse, en relación con el widget que recibió el evento.

Si mueve el widget como resultado del evento del mouse, use la posición global devuelta por GLOBALPOS () para evitar un movimiento de agitación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top