获取OnClick Pixmap坐标Java / QT / QT Jambi

时间:2014-01-11 17:33:35

标签: java qt qtgui qpixmap qt-jambi

我是一名新的java / qt程序员,我正在尝试使用java和qt jambi构建一个gui。

我在标签中放了一个像素图,它运行良好,但是,现在我需要在点击标签内的像素图时获取图像坐标。我不需要QWidget坐标。我只需要像素图坐标来处理点击点上的图像。

我想我应该覆盖 mousePressEvent 事件,但我不知道如何将它附加到“pixmap onclick”。

你能帮我一个简单的例子吗?

我希望我以正确的方式解释了我的问题,我的英语不是很棒,对不起!

1 个答案:

答案 0 :(得分:1)

  

我想我应该覆盖mousePressEvent事件,但我不知道如何将它附加到“pixmap onclick”。

你似乎把事件和信号混为一谈。前者是QEvent,后者是信号。你需要的是前者,你不需要后者。

你需要继承QLabel类并在编写C ++时编写类似的东西(在Java中不是Qt Jambi,但你可以把它当作伪代码)。

#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 * event) [virtual protected]

     

可以在子类中重新实现事件事件的事件处理程序,以接收窗口小部件的鼠标按下事件。

     

如果您在mousePressEvent()中创建新的小部件,则mouseReleaseEvent()可能不会达到您期望的位置,具体取决于底层窗口系统(或X11窗口管理器),窗口小部件的位置以及更多。

     

当您在窗口外单击时,默认实现会实现弹出窗口小部件的关闭。对于其他小部件类型,它什么都不做。

然后这是获取也适用于Qt 4的本地位置的方法。如果你需要更高的浮点精度等,你可能希望考虑在Qt 5中引入的localPos()或其他方法。

  

QPoint QMouseEvent::pos() const

     

返回鼠标光标相对于接收事件的窗口小部件的位置。

     

如果您因鼠标事件而移动窗口小部件,请使用globalPos()返回的全局位置以避免抖动。