2014-01-11 9 views
2

저는 새로운 Java/qt 프로그래머이고 java 및 qt jambi를 사용하여 GUI를 작성하려고합니다.OnClick Pixmap 좌표 받기 Java/QT/QT Jambi

나는 픽스맵을 라벨 안에 넣었지만 잘 작동하지만, 지금은 라벨 내부의 픽스맵을 클릭 할 때 이미지 좌표를 가져와야합니다. 나는 QWidget 좌표가 필요 없다. 클릭 한 지점의 이미지를 처리하려면 pixmap 좌표가 필요합니다.

mousePressEvent 이벤트를 무시해야한다고 생각하지만 "pixmap onclick"에 첨부하는 방법을 모르겠습니다.

제게 쉬운 예를 들어 주시겠습니까?

나는 올바른 방법으로 나의 문제를 설명했으면 좋겠다. 내 영어는 끔찍하지 않다. 미안하다!

답변

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]

이 이벤트 핸들러, A의 재 구현 될 수있다 위젯에 대한 마우스 누름 이벤트를 받기위한 서브 클래스.

mousePressEvent()에서 새 위젯을 만들면 mouseReleaseEvent()가 기본 윈도우 시스템 (또는 X11 윈도우 관리자)에 따라 위젯의 위치 및 기타 위치에서 예상대로 끝나지 않을 수 있습니다.

기본 구현은 창 외부를 클릭 할 때 팝업 위젯을 닫는 것을 구현합니다. 다른 위젯 유형의 경우 아무 것도 수행하지 않습니다.

다음이 당신은 당신이 등 플로트 더 정밀,

필요한 경우 Qt는 5 년에 도입 localPos() 또는 다른 방법을 고려해 볼 수 있습니다 또한 Qt는 4와 함께 작동 지역의 위치를 ​​얻을 수있는 방법은

QPoint QMouseEvent::pos() const

이벤트를받은 위젯을 기준으로 마우스 커서의 위치를 ​​돌려줍니다.

마우스 이벤트의 결과로 위젯을 이동하는 경우, 흔들리는 것을 피하기 위해 globalPos()가 반환하는 전역 위치를 사용하십시오.