Question

Je suis un nouveau programmeur Java / QT et j'essaie de construire une interface graphique à l'aide de Java et de Qt Jambi.

Je mets un pixmap à l'intérieur d'une étiquette et cela fonctionne bien, mais je dois maintenant obtenir les coordonnées de l'image lorsque je clique sur le pixmap à l'intérieur de l'étiquette.Je n'ai pas besoin des coordonnées Qwidget.J'ai juste besoin des coordonnées Pixmap pour travailler sur l'image sur le point cliqué.

Je pense que je devrais remplacer l'événement MousePresseVent , mais je ne sais pas comment l'attacher à "Pixmap OnClick".

Pouvez-vous me faire un exemple facile?

J'espère que j'ai expliqué mon problème de la bonne façon, mon anglais n'est pas génial, désolé!

Était-ce utile?

La solution

Je pense que je devrais remplacer l'événement de la sourissevent, mais je ne sais pas comment l'attacher à "Pixmap OnClick".

Vous semblez être déroutant des événements et des signaux ensemble. Le premier est un qevent, ce dernier est un signal. Ce dont vous avez besoin est le premier, et vous n'avez pas besoin de ce dernier.

Vous auriez besoin de sous-classer la classe Qlabel et d'écrire quelque chose comme celui-ci lors de l'écriture C ++ (pas de Qt Jambi en Java, mais vous pouvez le prendre comme pseudo-code de toute façon).

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

Donc, en fonction de votre cas d'utilisation, vous devez examiner la documentation de ces méthodes:

vide qwidget :: MousePressevent (QMouseEvent * événement) [Virtual protégé]

Ce gestionnaire d'événements, pour événement événementiel, peut être réimprimé dans une sous-classe pour recevoir des événements de presse de souris pour le widget.

Si vous créez de nouveaux widgets dans la sourisPettesEvent (), le Mousereleeffetvent () ne peut pas se retrouver là où vous vous attendez, en fonction du système de fenêtre sous-jacent (ou du X11 Window Manager), l'emplacement des widgets et peut-être plus.

La mise en œuvre par défaut implémente la fermeture des widgets contextuels lorsque vous cliquez à l'extérieur de la fenêtre. Pour les autres types de widget, il ne fait rien.

Et alors c'est la méthode pour obtenir la position locale qui fonctionne également avec QT 4. Vous pouvez envisager de considérer localPos () ou d'autres méthodes introduites dans Qt 5 si vous avez besoin de plus de précision avec flotteur, etc.

qpoint qmouseevent :: POS () const

retourne la position du curseur de la souris, par rapport au widget qui a reçu l'événement.

Si vous déplacez le widget à la suite de l'événement de la souris, utilisez la position globale renvoyée par GlobalPos () pour éviter un mouvement de secousses.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top