Получить координаты OnClick Pixmap Java/QT/QT Jambi

Я новый программист java/qt, и я пытаюсь создать графический интерфейс с использованием java и qt jambi.

Я поместил растровое изображение внутри метки, и оно работает хорошо, но теперь мне нужно получить координаты изображения, когда я нажимаю на растровое изображение внутри метки. Мне не нужны координаты QWidget. Мне просто нужны координаты растрового изображения для работы над изображением в точке щелчка.

я думаю, что мне следует переопределить событие mousePressEvent, но я не знаю, как прикрепить его к "pixmap onclick".

Не могли бы вы сделать мне простой пример?

Надеюсь, я правильно объяснил свою проблему, мой английский не идеален, извините!


person Community    schedule 11.01.2014    source источник


Ответы (1)


я думаю, что я должен переопределить событие mousePressEvent, но я не знаю, как прикрепить его к растровому изображению при щелчке.

Вы, кажется, путаете события и сигналы вместе. Первое — это QEvent, второе — это сигнал. Вам нужно первое, и вам не нужно второе.

Вам нужно будет создать подкласс класса QLabel и написать что-то подобное при написании C++ (не Qt Jambi в Java, но вы можете в любом случае использовать его как псевдокод).

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

Итак, в зависимости от вашего варианта использования, вам нужно будет изучить документацию этих методов:

void QWidget::mousePressEvent(событие QMouseEvent *) [виртуальная защита]

Этот обработчик события для события можно повторно реализовать в подклассе, чтобы получать события нажатия мыши для виджета.

Если вы создаете новые виджеты в mousePressEvent(), mouseReleaseEvent() может оказаться не там, где вы ожидаете, в зависимости от базовой оконной системы (или оконного менеджера X11), расположения виджетов и, возможно, еще чего-то.

Реализация по умолчанию реализует закрытие всплывающих виджетов при щелчке за пределами окна. Для других типов виджетов он ничего не делает.

а затем это метод получения локальной позиции, который также работает с Qt 4. Вы можете рассмотреть возможность использования localPos() или других методов, представленных в Qt 5, если вам нужна большая точность с плавающей запятой и т. д.

QPoint QMouseEvent::pos() const

Возвращает позицию курсора мыши относительно виджета, получившего событие.

Если вы перемещаете виджет в результате события мыши, используйте глобальную позицию, возвращаемую функцией globalPos(), чтобы избежать тряски.

person lpapp    schedule 11.01.2014