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

我在标签内放置了一个pixmap,它工作好,但现在我需要在标签内单击PixMap时获取图像坐标。我不需要quidget坐标。我只需要PIXMAP坐标才能在点击点上的图像上工作。

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

你能让我成为一个简单的例子吗?

我希望我以正确的方式解释了我的问题,我的英语不是令人敬畏的,对不起!

有帮助吗?

解决方案

我想我应该覆盖mousePreesEvent事件,但我不知道如何将它附加到“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 *事件)[虚拟受保护]

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

如果在mousePressEvent()中创建新小部件(),MousereleaseEvent()可能不会最终在您期望的位置,这取决于底层窗口系统(或X11窗口管理器),小部件的位置和更多。

默认实现在单击窗口外时实现了弹出窗口小部件的结束。对于其他小部件类型,它没有任何东西。

然后这是获取与Qt 4一起配合使用的本地位置的方法。如果您需要更精确的浮点等,则可能希望考虑QT 5中引入的LocalPOS()或其他方法。

qpoint qmouseEvent :: pos()const

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

如果作为鼠标事件的结果移动窗口小部件,请使用GlobalPos()返回的全局位置以避免摇动动作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top