2014-12-18 2 views
0

터치 스크린을 감지하지 못하도록 Qt 응용 프로그램을 구성하여 정상적인 화면의 동작을 유지할 수 있습니까?Qt 터치 스크린 감지 비활성화

+0

차이점이나 변경하고자하는 실제 동작을 설명해 주시겠습니까? 그리고 하드웨어 (장치 유형 및 디스플레이 및 OS)는 무엇입니까? 일반적으로 응용 프로그램이 터치 스크린을 감지하지 못하기 때문에 ... OS가 제공하는 정보를 가져옵니다. – hyde

+0

왜 그랬습니까? 당신의 유스 케이스는 무엇입니까? – lpapp

답변

1

에 따라 다릅니다. 그런 다음

#include <QObject> 
#include <QTouchEvent> // to get rid of "error: invalid use of incomplete type 'class QEvent'" 

class QTouchEventFilter: public QObject 
{ 
    Q_OBJECT 
public: 

    QTouchEventFilter(QObject *parent = 0) : QObject(parent) 
    { 
    } 

protected: 

    bool eventFilter(QObject * p_obj, QEvent * p_event) 
    { 
     if (p_event->type() == QEvent::TouchBegin || 
      p_event->type() == QEvent::TouchUpdate || 
      p_event->type() == QEvent::TouchEnd || 
      p_event->type() == QEvent::TouchCancel) 
     { 
      p_event->ignore(); 
      return true; 
     } 
     return false; 
    } 
}; 

을 당신이 터치 이벤트 무시하려는 위젯에 설치 : 운영 체제가 터치 이벤트와 마우스 프레스를 구별하는 경우, 당신은과 같이 이벤트를 무시하도록 touchEvent 필터를 만들 수

myWidget->installEventFilter(new QTouchEventFilter); 

그러나 내 본능은 대부분의 OS에서 '마우스를 누르는 이벤트'라고하는 '터치'가 모든 것을 포기할 의향이없는 한 필터링 할 수 없다는 것입니다 해당 위젯에 대한 마우스 입력. 기꺼이하시는 분이라면 같은 개념을 사용 하시되 한번 QEvent를 마우스와 관련된 것으로 바꾸십시오.