首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取OnClick Pixmap坐标Java / QT / QT

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

Stack Overflow用户
提问于 2014-01-11 17:33:34
回答 1查看 456关注 0票数 2

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

我在标签中放置了一个像素映射,它工作得很好,但是,现在我需要在单击标签内的像素地图时获得图像坐标。我不需要QWidget坐标。我只需要像素坐标来处理点击点上的图像。

我认为我应该重写mousePressEvent事件,但是我不知道如何将它附加到“像素点击”。

你能给我举个简单的例子吗?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-11 17:45:30

我认为我应该重写mousePressEvent事件,但是我不知道如何将它附加到“像素点击”。

你似乎把事件和信号混淆在一起。前者是一个QEvent,后者是一个信号。你需要的是前者,而你不需要后者。

在编写QLabel时,您需要对C++类进行子类化,并编写类似的代码(不是在C++中使用QLabel,但无论哪种方式都可以将其视为伪代码)。

代码语言:javascript
复制
#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
             ...
         }
};

因此,根据您的用例,您需要查看这些方法的文档:

事件)[虚拟保护] 该事件处理程序(用于事件)可以在子类中重新实现,以接收小部件的鼠标按下事件。 如果您在mousePressEvent()中创建新的小部件,那么mouseReleaseEvent()可能不会在您期望的地方结束,这取决于基础窗口系统(或X11窗口管理器)、小部件的位置以及更多。 当单击窗口外时,默认实现实现了弹出窗口小部件的关闭。对于其他小部件类型,它什么也不做。

然后,这是获取与Qt 4同样工作的本地位置的方法。如果您需要使用浮点等更高的精度,可以考虑localPos()或Qt5中引入的其他方法。

QPoint QMouseEvent::pos() const 返回鼠标光标相对于接收事件的小部件的位置。 如果由于鼠标事件而移动小部件,请使用globalPos()返回的全局位置来避免抖动。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21065528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档