Pergunta

Sou um novo programador java/qt e estou tentando construir uma interface gráfica usando java e qt jambi.

Coloquei um pixmap dentro de uma etiqueta e funciona bem, mas agora preciso obter as coordenadas da imagem quando clico no pixmap dentro da etiqueta.Não preciso das coordenadas do QWidget.Eu só preciso das coordenadas do pixmap para trabalhar na imagem no ponto clicado.

eu acho que deveria substituir o mousePressEvent evento, mas não sei como anexá-lo ao "pixmap onclick".

Você pode me dar um exemplo fácil?

Espero ter explicado meu problema da maneira certa, meu inglês não é legal, desculpe!

Foi útil?

Solução

acho que deveria substituir o evento mousePressEvent, mas não sei como anexá-lo ao "pixmap onclick".

Você parece estar confundindo eventos e sinais.O primeiro é um QEvent, o último é um sinal.O que você precisa é do primeiro e não precisa do último.

Você precisaria criar uma subclasse da classe QLabel e escrever algo assim ao escrever C++ (não Qt Jambi em Java, mas você pode considerá-lo como pseudocódigo de qualquer maneira).

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

Portanto, dependendo do seu caso de uso, você precisará consultar a documentação destes métodos:

void QWidget::mousePressEvent(QMouseEvent * evento) [virtual protegido]

Este manipulador de eventos, para evento de evento, pode ser reimplementado em uma subclasse para receber eventos de pressionamento do mouse para o widget.

Se você criar novos widgets em mousePressEvent(), mouseReleaseEvent() pode não terminar onde você espera, dependendo do sistema de janelas subjacente (ou gerenciador de janelas X11), da localização dos widgets e talvez mais.

A implementação padrão implementa o fechamento de widgets pop-up quando você clica fora da janela.Para outros tipos de widget, não faz nada.

e então este é o método para obter a posição local que também funciona com o Qt 4.Você pode considerar localPos() ou outros métodos introduzidos no Qt 5 se precisar de mais precisão com float, etc.

QPoint QMouseEvent::pos() const

Retorna a posição do cursor do mouse em relação ao widget que recebeu o evento.

Se você mover o widget como resultado do evento do mouse, use a posição global retornada por globalPos() para evitar um movimento de vibração.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top