Вопрос

Я новый программист Java / Qt, и я пытаюсь построить GUI, используя Java и Qt Jambi.

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

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

Можете ли вы сделать меня легким примером?

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

Это было полезно?

Решение

Я думаю, что я должен переопределить событие MousePessEnvent, но я не знаю, как прикрепить его к «Pixmap OnClick».

Вам, похоже, сбивающие сбивающие события и сигналы вместе. Первый - это 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 :: mouseSessevent (qmousevent * событие) [Виртуальные защищенные]

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

Если вы создаете новые виджеты в мышемерешении () MouserelaseEvent (), могут не входить в положение, где вы ожидаете, в зависимости от базовой оконной системы (или X11 Window Manager), местоположение виджетов и, возможно, больше.

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

, а затем это метод получения локальной позиции, который также работает с QT 4. Вы можете пожелать рассмотреть LocalPos () или другие методы, введенные в Qt 5, если вам нужна более точность с Float и т. Д.

qpoint qmousevent :: pos () const .

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top