【问题标题】:Get OnClick Pixmap coordinates Java / QT / QT Jambi获取 OnClick Pixmap 坐标 Java / QT / QT Jambi
【发布时间】:2014-01-11 17:33:34
【问题描述】:

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

我在标签内放置了一个像素图,效果很好,但是,现在我需要在点击标签内的像素图时获取图像坐标。我不需要 QWidget 坐标。我只需要像素图坐标来处理点击点上的图像。

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

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

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

【问题讨论】:

    标签: java qt qtgui qpixmap qt-jambi


    【解决方案1】:

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

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

    在编写 C++ 时,您需要子类化 QLabel 类并编写类似的内容(不是 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。如果您需要更高的浮点精度等,您可能希望考虑 localPos() 或 Qt 5 中引入的其他方法。

    QPoint QMouseEvent::pos() const

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多